2015-03-25 64 views
1

我的程序需要2次系統重啓才能完成其工作。 我想使用HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce註冊表項來自動運行我的程序。 順序操作:Windows啓動後的第二次自動運行

  • 寫自己的RunOnce鍵
  • 重啓
  • 自動運行,並做一些東西。
  • 寫自己的RunOnce鍵
  • 重啓
  • 完成工作

MSDN article說:「從這些密鑰的程序運行不應該寫入其執行過程中的關鍵」。

如何在第二次重新啓動後自動啓動程序?

第一次重啓之後:如果禁止寫入RunOnce,因爲程序已經從RunOnce運行,我的程序如何讓系統在重新啓動後自動運行它?

+0

literallly沒有必要擺弄註冊表:https://msdn.microsoft.com/en-us/library/windows/desktop/aa446817(v=vs.85).aspx 註冊表操作是錯誤的並且可能導致系統鎖定,甚至在最壞的情況下丟失數據,所以最好完全避免使用註冊表,因爲儘管它已經被廣泛使用了十多年,但它現在從未被用作僞API--在那裏是更好的方式來實現你的任務,但即時猜測他們不會很重要,直到你的軟件用於高效的環境 – specializt 2015-03-25 13:06:13

+1

@specializt:「註冊警告」旨在嚇倒普通用戶。開發人員應該能夠不搞亂。 – MSalters 2015-03-25 23:11:11

+0

MSDN是否禁止只更改RunOnce鍵或Run鍵?不清楚。如果自動運行程序可以更改運行鍵,我可以使用它。 – 2015-03-26 05:14:48

回答

-1

在您的應用程序退出時,您可以啓動一個新的應用程序B,將原始應用程序A添加到RunOnce。應用程序B甚至可以與A相同,但是可以使用命令行開關運行以僅執行RunOnce註冊並繞過正常執行路徑。

+0

這並不能解決問題。 RunOnce密鑰在處理過程中仍處於修改狀態,這正是Microsoft想要避免的。 – 2015-03-25 19:15:16

2

最簡單的解決方案是將自動運行指向批處理文件。無論如何,您可以在重新啓動之間修改批處理文件。

更好的解決方案當然是要消除這兩次重啓中的至少一次。即使你正在安裝一個新的文件系統驅動程序,一次重啓就足夠了。

相關問題