2013-06-27 161 views
4

我啓動的程序是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" 

這就是我想要的。但我想知道:

是否有更乾淨的方法來做到這一點,而不先生成這個批處理文件,所以:只使用註冊表?

這可能對其他人有用,因爲網絡充滿了「如何從註冊表中啓動記事本」的例子,但沒有一個(我可以找到)提到這個問題。

其他信息:

  1. 我不能讓「開始」,在註冊表項工作(start notepad.exe C:\test1.txt不啓動時沒有)。

  2. RunServicesOnce(代替的RunOnce),它用來一旦啓動程序,以異步方式,顯然不會再在Windows 7存在

  3. (代替的RunOnce)運行也是異步的,效果很好。但顯然,我不想在每次重新啓動後啓動此自述文件。

+1

怎麼樣把它寫進'HKCU \軟件\微軟\的Windows \ CurrentVersion \ RunOnce'呢?這將不會執行,直到用戶登錄。 –

+0

@Ken白:公平我沒有測試過你的解決方案。但是,我正在從註冊表中寫入請求管理員權限的(NSIS)安裝程序。由於該用戶沒有管理員權限,HKCU可能無法工作。 –

回答

3

您可以使用批處理文件的方法,而不需要一個批處理文件:

cmd /c "start notepad" 
+0

謝謝,這工作。 –

+1

爲了將來的參考,使用「cmd/c」的註冊表數據啓動notepad.exe ^「C:\ spaces with \ readme.txt ^」「 –

相關問題