そして、私の問題を確認するために時間を割いていただきありがとうございます。
ネイティブの NtCreateKey API を使用して、HKCU 内にキーを作成しようとしています。
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 を使用しています。
この問題を解決するための助けをいただければ幸いです。
ありがとう。