Windows 7 在Windows 7上启动时异步启动程序,仅使用注册表启动一次
我正在启动的程序是windows记事本(用于需要重新启动的程序安装后的自述文件)。我在Windows 7 Professional中工作,具有管理员权限 我希望以下解决方案能够正常工作:Windows 7 在Windows 7上启动时异步启动程序,仅使用注册表启动一次,windows-7,batch-file,registry,Windows 7,Batch File,Registry,我正在启动的程序是windows记事本(用于需要重新启动的程序安装后的自述文件)。我在Windows 7 Professional中工作,具有管理员权限 我希望以下解决方案能够正常工作: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce Name: myregentry Type: REG_SZ Data: notepad.exe C:\test2.txt 但是,RunOnce是同步
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
Name: myregentry
Type: REG_SZ
Data: notepad.exe C:\test2.txt
但是,RunOnce是同步的()。这导致记事本在一个完全黑屏()上启动,除了阅读文本之外,不可能做任何事情。启动等待,并仅在记事本窗口关闭后恢复。这对我的使用是不可接受的(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
在启动时不执行任何操作)无需批处理文件即可使用批处理文件方法:
cmd /c "start notepad"
将其写入
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
怎么样?在用户登录之前不会执行此操作。@Ken White:公平地说,我没有测试您的解决方案。然而,我是从一个请求管理员权限的(NSIS)安装程序在注册表中编写的。因此,如果用户没有管理员权限,HKCU可能无法工作。为了将来参考,注册表数据使用“cmd/c”start notepad.exe^“c:\path with spaces\readme.txt^”