Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 7 在Windows 7上启动时异步启动程序,仅使用注册表启动一次_Windows 7_Batch File_Registry - Fatal编程技术网

Windows 7 在Windows 7上启动时异步启动程序,仅使用注册表启动一次

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是同步

我正在启动的程序是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是同步的()。这导致记事本在一个完全黑屏()上启动,除了阅读文本之外,不可能做任何事情。启动等待,并仅在记事本窗口关闭后恢复。这对我的使用是不可接受的(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)用于异步启动一次程序,显然在Windows7中已经不存在了

  • Run(而不是RunOnce)也是异步的,运行良好。但很明显,我不想在每次重新启动后启动这个自述文件


  • 无需批处理文件即可使用批处理文件方法:

    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^”