2011-02-07 2 views
0

У меня есть система, которая включает в себя установщика, службу Windows и конфигурацию GUI-программы. Установщик не является стандартным проектом развертывания установки для визуальной студии, а другой программой, которую я закодировал. Программа установки запускает конфигурационную программу после установки службы.Какой пользовательский реестр я получаю, к которому моя программа запускается из моего установщика?

Я внес изменения в конфигурационную программу, которая по умолчанию помещает текстовое поле в значение реестра в реестре 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. –

+0

Оба установщика и программа скомпилированы как 32-разрядные приложения. Меня смущает то, что программа также использует другой набор ключей в hive_LOCAL_MACHINE \ Software hive, который программа успешно читает и записывает из того, была ли она запущена из установщика или нет. – Connell

ответ

0

Оказывается, что это не было ничего общего с реестром на всех. Я переместил мой код так, чтобы значение реестра было загружено нажатием кнопки «Далее» в установщике, а не в начале приложения. В моей функции OnLoad была строка, которая возвращает, если соединение с сервером не было инициализировано (что не будет, если оно еще не было настроено вообще). Мой код, загружающий значение, был ПОСЛЕ этой строки кода и поэтому никогда не был достигнут.

Только я, будучи глупым.

Thanks

Смежные вопросы