我认为这个问题已经被问过了,但是我找不到适合我的解决方案。我在Windows 7 Ultimate 64位下使用Delphi 7编写应用程序。实际上,我最初在32位操作系统下开始编写应用程序,但是后来更换了电脑,所以现在是64位。在我的程序中,我使用注册流程,并使用从Windows的PROGID值生成的许可证ID。不幸的是,它无法读取该值,似乎它正在查找不同的文件夹,可能是由Windows 64重定向到32位注册表。你能帮忙吗?这是我使用的代码:
Registry := TRegistry.Create(KEY_READ OR $0100);
try
Registry.Lazywrite := false;
Registry.RootKey := HKEY_LOCAL_MACHINE;
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');
result := Registry.ReadString('ProductID');
Registry.CloseKey;
finally
Registry.Free;
end; // try..finally
另外,您知道如何在 Delphi 7 中查找程序是否在 64 位或 32 位计算机上运行吗?