我有一个系统,其中包括一个安装程序,一个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启动的进程和另一进程调用的进程有任何其他差异吗?
谢谢,
请注意64位版本的Windows上的注册表虚拟化。 – 2011-02-07 17:31:10