1
通過我的桌面應用程序的安裝程序(C#代碼),我想執行一個外部進程。我這樣做使用下面的代碼。從System.Diagnostics.Process.Start()方法啓動的進程訪問註冊表項
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)。
雖然我確認註冊表項值已被安裝程序更新(我可以通過註冊表手動讀取註冊表項),但外部進程無法讀取這些值。它試圖如下:
using (RegistryKey rk = Registry.CurrentUser.OpenSubKey(regKey))
{
return (string)rk.GetValue(subKey);
}
當我把一個斷點在上面的紋路,我看到RK其內部具有無子項。我在Win7環境下做了所有這些(不知道UAC是否引起麻煩)
現在,當我手動直接運行外部應用程序(即雙擊應用程序的exe)時,我能夠讀取註冊條目容易。好像我在開始這個過程時做錯了什麼。任何人有什麼想法是什麼?
感謝, 卡皮爾
感謝您的回答馬丁。但是我怎麼填寫用戶名和密碼屬性。有沒有任何Windows API獲取當前用戶的用戶名和密碼?我非常懷疑。 – Kapil 2010-04-30 22:35:25