我在.Net中編寫了一個包裝應用程序,該應用程序使用指定的用戶名和密碼啓動另一個WinForms應用程序。對於背後的原因,我需要做此背景下,你可以看看下面的問題,我在本週早些時候發佈:奇怪的問題。使用Process.Start啓動的應用程序在寫入Windows註冊表時發出UnauthorizedAccessException
下面是包裝應用的代碼:
string sysFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName = (sysFolder + @"\AppMain.exe").Replace(@"file:\", @"\\");
pInfo.UserName = GetUserName();
pInfo.Password = ToSecure(GetPassword());
pInfo.UseShellExecute = false;
Process p = Process.Start(pInfo);
p.WaitForExit();
方法GetUserName()和GetPassword()只是從加密的文本文件中檢索用戶名和密碼。方法ToSecure()只是將字符串轉換爲System.Security.SecureString。
好的。現在這裏是怪異的部分! :)這個包裝應用程序實際上正常工作MOST的時間;但出於某種奇怪的原因,它似乎在系統重啓後立即出現問題。重新啓動後,大約5分鐘後,正在啓動的應用程序(AppMain.exe)在應用程序嘗試寫入Windows註冊表時引發UnauthorizedAccessException。我不知道爲什麼這隻在前5分鐘出錯,然後突然開始正常工作。
還要注意,我必須關閉該應用程序,並在啓動五分鐘後重新啓動,以使其正常工作。如果我只是在期待中按「繼續」,它會在試圖寫入註冊表時繼續執行該命令。
下面是在重新啓動後啓動應用程序時會拋出異常的代碼。
Microsoft.VisualBasic.Interaction.SaveSetting("app", "settings", "time", DateTime.Now.ToString());
我已確認在XP和Windows 7的任何人有任何想法,爲什麼這是在啓動時發生,爲什麼突然異常消失,如果我推出5分鐘後開機後應用此行爲。
使用Taskmgr.exe,進程選項卡並開始查殺進程,直到找到干擾應用程序的進程。從您的反惡意軟件開始。 –
@Hans Passant我非常懷疑這是另一個進程干擾我的應用程序的結果,因爲我可以在三臺不同的計算機上重現相同的行爲,包括Windows XP的_fresh_安裝。 – BruceHill
嗯,只需要5分鐘。我們會更多地瞭解。祝你好運。 –