我不知道我的错误在哪里。它总是跳到else
分支,但是密钥存在,我检查了几次。
var
reg : TRegistry;
begin
with TRegistry.Create do try
RootKey:=HKEY_CURRENT_USER;
OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False);
if KeyExists('nginx.exe') then begin
ShowMessage('Ja geht ist da');
Result := True;
btnAutostart.ImageIndex := 5
end
else begin
Result := False;
btnAutostart.ImageIndex := 0;
end;
finally
Free;
end;
end;
你需要打电话ValueExists
而不是KeyExists
。键是 Regedit 中显示为文件夹的内容,但您正在寻找名为的值nginx.exe
在钥匙里HKCU\Software\...\Run
.
其他一些评论:
- 由于您仅从注册表中读取,因此使用
OpenKeyReadOnly
而不是OpenKey
.
- 检查返回值
OpenKeyReadOnly
万一钥匙打不开。
- 如果您确实需要使用 HKLM 执行此操作(如您在评论中所述),请在 64 位系统上运行 32 位进程时注意注册表重定向混乱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)