我啓動的程序是Windows記事本(用於需要重新啓動程序安裝後的自述文件)。我正在使用Windows 7 Professional,擁有管理員權限。在Windows 7上啓動時只啓動一次程序,僅使用註冊表
我想獲得以下解決方案工作:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
Name: myregentry
Type: REG_SZ
Data: notepad.exe C:\test2.txt
然而,的RunOnce是同步的(http://msdn.microsoft.com/en-us/library/aa376977%28v=vs.85%29.aspx)。這導致記事本在全黑屏幕(screenshot @ tinypic)之上啓動,除了閱讀文本之外,不可能做任何事情。啓動等待,並且只有在記事本窗口關閉後才能恢復。這是我無法接受的(ti會讓用戶感到困惑)。
我能得到以下解決方案的工作:
1)創建一個註冊表項:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
Name: myregentry
Type: REG_SZ
Data: C:\launchreadme.bat
2)創建位於C自我刪除的批處理文件:\ launchreadme.bat:
@ECHO OFF
start notepad.exe C:\test2.txt
REM **** Delete this script ****
DEL "%~f0"
這就是我想要的。但我想知道:
是否有更乾淨的方法來做到這一點,而不先生成這個批處理文件,所以:只使用註冊表?
這可能對其他人有用,因爲網絡充滿了「如何從註冊表中啓動記事本」的例子,但沒有一個(我可以找到)提到這個問題。
其他信息:
我不能讓「開始」,在註冊表項工作(
start notepad.exe C:\test1.txt
不啓動時沒有)。RunServicesOnce(代替的RunOnce),它用來一旦啓動程序,以異步方式,顯然不會再在Windows 7存在
(代替的RunOnce)運行也是異步的,效果很好。但顯然,我不想在每次重新啓動後啓動此自述文件。
怎麼樣把它寫進'HKCU \軟件\微軟\的Windows \ CurrentVersion \ RunOnce'呢?這將不會執行,直到用戶登錄。 –
@Ken白:公平我沒有測試過你的解決方案。但是,我正在從註冊表中寫入請求管理員權限的(NSIS)安裝程序。由於該用戶沒有管理員權限,HKCU可能無法工作。 –