Windows 注册表 运行 密钥
Windows Registry Run Key
根据http://msdn.microsoft.com/en-au/library/aa376977(v=vs.85).aspx:
"Run and RunOnce registry keys cause programs to run each time that a user logs on. The data value for a key is a command line."
然后我是否可以添加密钥:
- 名字:我的名字
- 数据:
START /MIN "Title" "cmd.exe" /c "@echo off && "C:\TestApplication.exe" -Arg1 "Arg2"
目标是在 Windows 启动时启动我的控制台应用程序 "C:\TestApplication.exe"
使用参数 "-Arg1 "Arg2""
最小化?
我问是因为我似乎无法让它工作。
该文档具有误导性,但并非完全不正确。命令行直接传递给 CreateProcess() 而不是传递给 cmd.exe
,因此 cmd.exe
内部的命令(例如 start
)无效。这意味着您需要在命令行的开头添加 cmd /c
。
您还遗漏了末尾的引号,您不需要在 cmd.exe
周围加上引号。这有效:
cmd /c START /MIN "Title" cmd /c "@echo off && "C:\TestApp.exe" -Arg1 "Arg2""
但是,由于目标应用程序是可执行文件,而不是批处理文件,因此您也不需要 @echo
命令:
cmd /c START /MIN "Title" cmd /c ""C:\TestApp.exe" -Arg1 "Arg2""
(请注意,传递给 /c
的命令行从不回显。)
根据http://msdn.microsoft.com/en-au/library/aa376977(v=vs.85).aspx:
"Run and RunOnce registry keys cause programs to run each time that a user logs on. The data value for a key is a command line."
然后我是否可以添加密钥:
- 名字:我的名字
- 数据:
START /MIN "Title" "cmd.exe" /c "@echo off && "C:\TestApplication.exe" -Arg1 "Arg2"
目标是在 Windows 启动时启动我的控制台应用程序 "C:\TestApplication.exe"
使用参数 "-Arg1 "Arg2""
最小化?
我问是因为我似乎无法让它工作。
该文档具有误导性,但并非完全不正确。命令行直接传递给 CreateProcess() 而不是传递给 cmd.exe
,因此 cmd.exe
内部的命令(例如 start
)无效。这意味着您需要在命令行的开头添加 cmd /c
。
您还遗漏了末尾的引号,您不需要在 cmd.exe
周围加上引号。这有效:
cmd /c START /MIN "Title" cmd /c "@echo off && "C:\TestApp.exe" -Arg1 "Arg2""
但是,由于目标应用程序是可执行文件,而不是批处理文件,因此您也不需要 @echo
命令:
cmd /c START /MIN "Title" cmd /c ""C:\TestApp.exe" -Arg1 "Arg2""
(请注意,传递给 /c
的命令行从不回显。)