2012-08-27 36 views
7

我試圖僅在Windows啓動時爲當前用戶啓動一些應用程序。在Windows上運行C#應用程序啓動

我可以用下面的做到這一點:

RegistryKey oKey = Registry.CurrentUser.OpenSubKey("Software", true); 
oKey = oKey.OpenSubKey("Microsoft", true); 
oKey = oKey.OpenSubKey("Windows", true); 
oKey = oKey.OpenSubKey("CurrentVersion", true); 
oKey = oKey.OpenSubKey("Run", true); 
oKey.SetValue("Application 1", "C:\\path\\to\\ap1.exe"); 
oKey.SetValue("Application 2", "C:\\path\\to\\ap2.exe"); 

但我試圖運行這是一個Visual Studio安裝項目的一部分。我已經添加了我的自定義動作,程序開始像它應該,並且安裝程序在XP中運行良好。

在Windows 7中,安裝程序會獲得提升的權限,並執行所有操作,但將條目插入到當前用戶的註冊表中。然而,它作爲一個獨立的應用程序(安裝程序項目之外)運行時會插入註冊表項,並且不會獲得提升的權限。

我唯一能想到的是,使用提升的權限,它試圖將條目插入到管理員帳戶而不是當前用戶?或者有什麼我失蹤?還有另外一種方法可以實現我的目標嗎?

+0

你能給我更多的信息嗎?或請詳細說明你的目標? – VIRA

+1

如果你得到'Registry.LocalMachine.OpenSubKey()'會怎麼樣? – wasyl

+0

您不應該需要任何自定義操作才能執行此操作。 –

回答

2

是否有沒有理由不使用啓動文件夾的用戶?

更可能的問題是安裝程序正在執行的用戶。如果用戶不是管理員,則提升安裝程序將在提升流程的用戶環境下運行。

將應用程序添加到啓動文件夾或在首次啓動時添加註冊表項將是更安全的選擇。

1

如果安裝程序獲得提升權限,爲什麼要將設置寫入HKCU?請將它寫入HKLM。它將對所有用戶生效。

+0

'HCKU','HKCU'同樣的區別! – ja72

+0

是的,這是一個選項..但我希望只保留當前用戶 – C0NFUS3D

+2

用戶特定的配置設置最好由應用程序而不是安裝程序配置。 –

相關問題