gpt4 book ai didi

Delphi - 将 NtCreateKey 与 HKCU 结合使用

转载 作者:行者123 更新时间:2023-12-03 18:23:08 25 4
gpt4 key购买 nike

感谢您花时间查看我的问题。

我正在尝试使用 native NtCreateKey API 在 HKCU 内创建 key 。

我有一个资源可以帮助我了解 API 的工作原理,但我似乎无法使其适用于 HKCU,只有 HKLM...这可能吗?

我已经有了源代码:

const
KeyNameBuffer: AnsiString = '\Registry\Machine\SOFTWARE'; //Assuming I need to change this.....
NewKeyNameBuffer: AnsiString = 'Parent Key To Create';
HiddenKeyNameBuffer: AnsiString = 'Main Key To Create';
HiddenValueNameBuffer: AnsiString = 'Value Key To Create';

procedure TForm1.btnDemoClick(Sender: TObject);
var
KeyName, ValueName: UNICODE_STRING;
SoftwareKeyHandle, SysKeyHandle, HiddenKeyHandle: THandle;
Status: ULONG;
ObjectAttributes: OBJECT_ATTRIBUTES;
Disposition: ULONG;
Buffer: array of WideChar;
begin

//
// Open the Software key
//
SetLength(Buffer, Length(KeyNameBuffer));
MultiByteToWideChar(CP_UTF8, 0, @KeyNameBuffer[1], Length(KeyNameBuffer),
PWideChar(Buffer), Length(Buffer));
KeyName.Buffer := @Buffer[0];
KeyName.Length := Length(KeyNameBuffer) * SizeOf(WideChar);
InitializeObjectAttributes(ObjectAttributes, @KeyName, OBJ_CASE_INSENSITIVE,
0, nil);
Status := NtCreateKey(SoftwareKeyHandle, KEY_ALL_ACCESS, ObjectAttributes, 0,
nil, REG_OPTION_NON_VOLATILE, Disposition);
if not NT_SUCCESS(Status) then
raise Exception.Create('Error: Couldn''t open HKLM\Software');
end;

我的所有类型定义和 API 声明都是在该代码之上进行的,我只是认为没有必要将其全部发布。

我使用的是 Delphi 7 IDE。

任何有关解决此问题的帮助将不胜感激。

谢谢。

最佳答案

我相信您应该使用 RegCreateKeyEx 来实现此目的。

但是,您的问题的答案是 HKCU 的适当键名是:

\Registry\User\<Users_SID>

当然,您必须提供当前用户的 SID。这是 Win32 API 在 RegCreateKeyEx 中为您提供的众多服务之一。

关于Delphi - 将 NtCreateKey 与 HKCU 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com