2011-02-07 58 views
0

我有一个系统,其中包括一个安装程序,一个Windows服务和一个配置GUI程序。安装程序不是您的标准Visual Studio安装程序部署项目,而是我编写的另一个程序。安装程序在安装服务后启动配置程序。我正在访问哪个用户的注册表,我的程序是从我的安装程序启动的?

我已经对配置程序进行了更改,默认情况下文本框HKEY_CURRENT_USER注册表中的注册表值(这是来自第三方软件,所以我不能更改此值的位置)的注册表值。这一切工作正常,当我从我的开始菜单启动配置程序,但是当安装程序完成后启动程序,此值不会从注册表中加载。

下面是启动安装程序完成后,该程序的代码:

Process process = new Process(); 
process.StartInfo.FileName = Program.Installer.ConfigPath; 
process.StartInfo.Arguments = Location.X.ToString() + " " + Location.Y.ToString(); 
process.Start(); 
while (!process.Responding) 
    Thread.Sleep(50); 
Close(); 
Application.Exit(); 

下面是获取注册表值码:

_regKey = Registry.CurrentUser.OpenSubKey("Software\\" + _appName); 
return _regKey.GetValue(key); 

我看到在任务管理器这两个进程,我完全看不出这两者之间的差别。两者都由同一用户以相同路径运行。安装程序需要提升,但是我已经分别提升了配置程序,这仍然有效。

任何人都可以想到Windows启动的进程和另一进程调用的进程有任何其他差异吗?

谢谢,

+1

请注意64位版本的Windows上的注册表虚拟化。 – 2011-02-07 17:31:10

回答

0

原来,这与注册表根本没有任何关系。我移动了我的代码,以便在安装程序中按下“下一步”按钮时加载注册表值,而不是启动应用程序。在我的OnLoad函数中,如果没有初始化到服务器的连接(如果尚未完成设置,则不会返回),则返回一行。我加载该值的代码是在这行代码之后,因此永远不会到达。

只是我很愚蠢。

谢谢

相关问题