我正在启动的程序是Windows记事本(用于程序安装后需要重新启动的自述文件)。我正在使用Windows 7专业版,并具有管理员权限。
我希望能让以下解决方案正常工作:
然而,RunOnce是同步的(http://msdn.microsoft.com/en-us/library/aa376977%28v=vs.85%29.aspx)。这会导致记事本在完全黑屏的情况下启动(在tinypic上查看截图),除了阅读文本之外没有任何其他操作可能性。启动等待,只有在记事本窗口关闭后才恢复。对于我的使用来说,这是不可接受的(会使用户感到困惑)。
我可以让以下解决方案起作用:
1)创建一个注册表项:
这做到了我想要的效果。但是我想知道:
有没有更简洁的方法来完成此操作,而不需要先生成此批处理文件,只使用注册表即可?
这可能对其他人有用,因为网络上充满了“如何从注册表启动记事本”的示例,但其中没有一个(我能找到的)提到了此问题。
附加信息:
1. 我无法在注册表条目中使“start”起作用(
2. RunServicesOnce(而不是RunOnce),曾经用于异步地一次性启动程序,但显然在Windows 7中已经不存在了。
3. Run(而不是RunOnce)也是异步的,并且运行良好。但是显然我不想在每次重新启动后都启动此自述文件。
我希望能让以下解决方案正常工作:
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)。这会导致记事本在完全黑屏的情况下启动(在tinypic上查看截图),除了阅读文本之外没有任何其他操作可能性。启动等待,只有在记事本窗口关闭后才恢复。对于我的使用来说,这是不可接受的(会使用户感到困惑)。
我可以让以下解决方案起作用:
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”起作用(
start notepad.exe C:\test1.txt
在启动时什么都不做)。2. RunServicesOnce(而不是RunOnce),曾经用于异步地一次性启动程序,但显然在Windows 7中已经不存在了。
3. Run(而不是RunOnce)也是异步的,并且运行良好。但是显然我不想在每次重新启动后都启动此自述文件。
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
怎么样?这样直到用户登录后才会执行。 - Ken White