我發現代碼在網上的這個漂亮的片段不起作用:使程序從c#代碼啓動時運行。設置註冊表運行爲「真」以及
rkApp = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
,哪個跑得不錯,但可惜在Windows 7和Vista,我懷疑,它崩潰的原因它不」沒有權限寫在那裏。
於是我研究(上當然計算器)如何避免這種情況,最快的方法:
rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
夠簡單了!雖然還有兩個問題。一個是兩種方法(在一個XP Box上),程序認爲它的相對路徑是在C:\ windows文件夾中的某個地方...所以即,它不會找到我的路徑相對幫助文件等。第二個問題是,在Windows 7上,我的程序不會啓動,直到我登錄。我希望它在任何人登錄之前在後臺啓動。
它的一個簡單的.exe,掛在系統運行時。我不想創建這個安裝程序的怪胎來解決這些管理和路徑問題。
我想我將不得不創建它作爲服務(不知道如何做到這一點),讓它啓動時,機器重新啓動之前,任何人登錄。其次要做到這一點,我相信我必須弄清楚管理員權限,並且由於我不想在每次啓動時都要批准該程序運行,這聽起來像我在安裝時必須弄清楚其管理權限,但是沒有安裝程序。
所以,只是好奇我可能採取什麼路線來實現這個目標。我甚至可以忍受它在用戶登錄後纔會出現,但我目前使用這種方式工作的方法真的使我的程序無法正常工作,因爲它試圖將東西寫出到一個新目錄中(而不是我最初開始的那個目錄EXE)。等等...我不知道如何去解決這個問題。
在有人登錄之前沒有系統托盤。 – SLaks 2010-05-17 15:59:11