gpt4 book ai didi

delphi - 尝试在注册表中保存值时出错

转载 作者:行者123 更新时间:2023-12-03 15:25:50 24 4
gpt4 key购买 nike

使用下面的代码,我尝试在注册表的 HKEY_LOCAL_MACHINE 部分设置一个值,但收到错误“无法为...设置数据”如果我使用 HKEY_CURRENT_USER 就没有问题。

这里我可能缺少什么。

(代码并不完整,但我认为这是其中重要的部分)

type
TTypWinBits = (Bit32, Bit64);

function WinBits: TTypWinBits;
type
TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall;
var
hKernel32 : Integer;
IsWow64Process : TIsWow64Process;
IsWow64 : BOOL;
begin
Result := Bit32;
hKernel32 := LoadLibrary('kernel32.dll');
if (hKernel32 = 0) then RaiseLastOSError;
@IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process');
if Assigned(IsWow64Process) then
begin
IsWow64 := False;
if (IsWow64Process(GetCurrentProcess, IsWow64)) then
Result := Bit64
else
RaiseLastOSError;
end;
FreeLibrary(hKernel32);
end;

function TFastRegistry.CreateConnection: TRegistry;
begin
Result := TRegistry.Create;
try
case WinBits of
Bit32: Result := TRegistry.Create;
Bit64: Result := TRegistry.Create(KEY_WRITE OR KEY_WOW64_64KEY);
end;
except
on E: exception do
Result := nil;
end;
end;

procedure TFastRegistry.RunAdd(aDesc, aName: string);
var
Reg: TRegistry;
sRegKey: String;
begin
sRegKey := 'Software\Microsoft\Windows\CurrentVersion\Run';
Reg := CreateConnection;
with Reg do
begin
try
RootKey := HKEY_LOCAL_MACHINE;
if not KeyExists(sRegKey) then
OpenKey(sRegKey, True)
else
OpenKey(sRegKey, False);
WriteString(aDesc, aName);
finally
CloseKey;
Free;
end;
end;
end;

最佳答案

程序需要提升权限才能写入本地计算 secret 钥。没有它,功能就会失败,正如您所观察到的。如果您的程序应该是管理工具,请使用 list 文件,以便操作系统会提示您授予权限。如果您不需要,请改为写入当前用户 key ,这样它就不会影响系统上的所有帐户。

关于delphi - 尝试在注册表中保存值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699924/

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