2011-01-14 38 views
1

我想在一个C#3.5的应用的UserData注册表子项来获得,所以我可以查找一个外部程序来启动它的安装位置。尝试在Windows 7上打开HKLM Software Microsoft Windows CurrentVersion Installer 时收回“ResolveIOD”?

做这样的事情:

RegistryKey installerKey = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Installer"); 

然后

RegistryKey userDataKey = installerKey.OpenSubKey("UserData"); 

则返回NULL;如果我回去叫installerKey.GetSubKeyNames()找出哪些子项名称是Installer下,目前它只返回一个子项名称:ResolveIOD。我一直没有找到能够找到这个键的东西。

regedit不显示ResolveIOD关键在那里,它表明,远不止一个关键的存在 - UserDataFoldersSecure,等等都在那里,而不是由GetSubKeyNames()要么返回。

这是我第一次访问在注册表配置单元的安装部分东西,所以我可能做错了什么。为了从客户端应用程序中读取这些(可能是敏感的,安全方面的)密钥,是否需要某种特殊许可?或者在Windows 7上这通常不是可接受的事情,我应该找到一种替代方法找出程序的位置?

因为我看到这个提到的其他注册表问题:这是运行在64位Windows的32位应用程序。

+0

你可能需要用兼容模式运行这个。 HKLM在Win7中是特定于管理员的。也许尝试HKCU。 – leppie 2011-01-14 04:55:19

回答

相关问题