Tof*_*nov 6 delphi registry windows-identity 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;
有人可以帮忙吗?
gab*_*abr 23
这是因为虚拟化密钥'\ Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion \'不包含'ProductID'项.
修改代码以创建TRegistry实例
Registry := TRegistry.Create(KEY_WRITE OR KEY_WOW64_64KEY);
其中KEY_WOW64_64KEY = $ 0100.这将给你预期的结果.
或者,使用DSiWin32并致电
DSiReadRegistry('\Software\Microsoft\Windows NT\CurrentVersion', 
  'ProductID', '', HKEY_LOCAL_MACHINE, KEY_QUERY_VALUE OR KEY_WOW64_64KEY);
| 归档时间: | 
 | 
| 查看次数: | 29588 次 | 
| 最近记录: |