相关疑难解决方法(0)

Registry ReadString方法在Delphi 7的Windows 7中不起作用

下面的代码示例用于返回我之前的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 registry windows-identity windows-7

6
推荐指数
1
解决办法
3万
查看次数

为什么我的应用程序在以管理员身份运行时的工

我有一个小的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设置设置为"仅在程序尝试更改计算机时通知"(第二低级别).当我把它归结为"从不通知"它也可以工作(不需要使用"以管理员身份运行").

如果您对可能存在的问题有任何想法/想法,我将不胜感激.

谢谢.

windows delphi registry privileges uac

2
推荐指数
1
解决办法
593
查看次数