我在Visual Studio 2010中设置我的部署项目时遇到问题。使用Windows 7 x64的Im。这是我的问题:VS2010部署项目:多用户安装和注册表项问题
设置应该为所有用户安装我的程序。在安装过程中,将三个注册表项写入HKEY_LOCAL_MACHINE/Software/Something文件夹,其中包含串行,名称和组织的设置变量值 - [COMPANYNAME],[PIDKEY],[USERNAME]。
会发生什么:
用户1(管理员)安装软件,输入自己的用户名,串行和公司。一切正常。通过使用Registry.LocalMachine.OpenSubKey(path)
,可以找到钥匙和程序读取的值。我没有得到的第一件事是我无法使用regedit.exe找到注册表项。无论如何,上面的代码找到了它们。
现在,User2(非管理员)尝试执行新安装的程序。安装程序会再次启动,并说“等待...以配置...”。 User2的用户特定文件夹已正确创建。该程序已启动,但该程序无法找到注册表项。
现在,最后,User1再次尝试打开程序。 (注册表项无法找到。)编辑:注册表项实际存在,但其值为空。
所以,我的问题:
- 为什么我看不到的注册表项与注册表编辑器在安装后,虽然他们显然在那里?
(2.为什么注册表项删除,当第二个用户试图启动程序的第一次,我怎么能避免呢?)
编辑: 2.为什么注册表值设置为空字符串,当第二个用户第一次尝试启动程序时,我该如何避免?
来自奥克兰的欢呼和感谢!
马克
1.完美,我永远不会那么一个......不知道为什么Find函数没有找到键?无论如何,他们在那里。 User2启动程序后,注册表项仍然存在,但值将被空值覆盖。所以我在问题描述中实际上弄错了:条目在那里,但值被设置为“”。很明显,“第二个安装程序”再次执行该条目,而没有这个值。你有一个想法如何解决? – Marc 2012-03-06 09:06:44
请注意,除非需要64位支持,否则将.NET应用程序编译为x86(而不是“任何”应用程序)而不是对Wow6432Node子项进行硬编码可能更清晰。 – 2012-03-06 12:39:24