下面的代码示例用于返回我之前的windows id,但现在它不起作用,并返回空字符串,dunno为什么.
function GetWindowsID: string;
var
Registry: TRegistry;
str:string;
begin
Registry := TRegistry.Create(KEY_WRITE);
try
Registry.Lazywrite := false;
Registry.RootKey := HKEY_LOCAL_MACHINE;
// Registry.RootKey := HKEY_CURRENT_USER;
if CheckForWinNT = true then
Begin
if not Registry.OpenKeyReadOnly('\Software\Microsoft\Windows NT\CurrentVersion') then showmessagE('cant open');
end
else
Registry.OpenKeyReadOnly('\Software\Microsoft\Windows\CurrentVersion');
str := Registry.ReadString('ProductId');
result:=str;
Registry.CloseKey;
finally
Registry.Free;
end; // try..finally
end;
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
我有一个小的Delphi应用程序,它将一个密钥写入LOCAL_MACHINE注册表.当我在具有管理员权限的用户的Windows 7专业版上运行它时,它无法写入值,但是当我右键单击并选择"以管理员身份运行"时,它确实有效.
代码是:
var
reg : TRegistry;
begin
Result := false;
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if (reg.OpenKey('Software\YepYep', TRUE)) then
Begin
try
reg.WriteString('ProductKey', Trim(ProductKey));
Result := true;
finally
reg.CloseKey();
end;
End;
reg.Free;
end;
Run Code Online (Sandbox Code Playgroud)
计算机UAC设置设置为"仅在程序尝试更改计算机时通知"(第二低级别).当我把它归结为"从不通知"它也可以工作(不需要使用"以管理员身份运行").
如果您对可能存在的问题有任何想法/想法,我将不胜感激.
谢谢.