C# 使用C在本地计算机中创建注册表值#

C# 使用C在本地计算机中创建注册表值#,c#,deployment,C#,Deployment,我正在尝试将安装路径保存到注册表,以便我的windows服务知道我的其他应用程序安装在何处 我正在使用visual studio的部署在HKEY_CURRENT_用户中创建注册表值,但在LocalMachine下运行的windows服务无权访问该注册表值。然后,我让安装程序在HKEY_LOCAL_机器中创建一个注册表值,但当我在安装后查看注册表时,它似乎从未创建过该值。有什么想法吗?你不需要自己做一个。msi实际上会为您设置一个,可以在 HKLM\SOFTWARE\Microsoft\Windo

我正在尝试将安装路径保存到注册表,以便我的windows服务知道我的其他应用程序安装在何处


我正在使用visual studio的部署在HKEY_CURRENT_用户中创建注册表值,但在LocalMachine下运行的windows服务无权访问该注册表值。然后,我让安装程序在HKEY_LOCAL_机器中创建一个注册表值,但当我在安装后查看注册表时,它似乎从未创建过该值。有什么想法吗?

你不需要自己做一个。msi实际上会为您设置一个,可以在

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductGUID}\InstallLocation
编辑


我刚看了一眼,似乎并不是每次都设置了…

可能您没有将安装程序设置为请求权限提升,并且它正在按用户虚拟化注册表中安装它


检查HKEY\U CLASSES\U ROOT\VirtualStore\Machine。如果您的密钥在那里,您需要设置安装程序以请求提升。

结果表明,它是写入HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\而不是HKEY\U LOCAL\U MACHINE\SOFTWARE\的,因为我运行的是64位windows