Через установщик моего настольного приложения (код C #) я хочу выполнить внешний процесс. Я делаю это, используя следующий код.
ProcessStartInfo sinfo = new ProcessStartInfo();
sinfo.FileName = filePath;
sinfo.WorkingDirectory = workingDir;
sinfo.UseShellExecute = false;
using (Process proc = Process.Start(sinfo))
{
proc.WaitForExit();
int code = proc.ExitCode;
}
Мой внешний процесс в основном пытается прочитать запись в реестре и обработать что-то с ней (он только читает, но не записывает в регистр).
Хотя я подтверждаю, что установочные значения реестра уже были обновлены установщиком (и я могу вручную прочитать записи reg через regedit), внешний процесс не может их прочитать. Его пытаются читать следующим образом:
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(regKey))
{
return (string)rk.GetValue(subKey);
}
Когда я ставлю точку останова в приведенных выше строках, я вижу, что в rk нет подключей. Я делаю все это в Win7 env (не знаю, вызывает ли UAC проблемы)
Теперь, когда я напрямую запускаю внешнее приложение вручную (т.е. дважды нажимаю на exe приложения), я могу легко читать записи reg. Похоже, что я делаю что-то не так при запуске процесса. У кого-нибудь есть идеи, что?
Спасибо,
Капил