![Windows 无人值守:从操作系统启动驱动器而不是“C:”驱动器运行程序](https://linux22.com/image/576040/Windows%20%E6%97%A0%E4%BA%BA%E5%80%BC%E5%AE%88%EF%BC%9A%E4%BB%8E%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E9%A9%B1%E5%8A%A8%E5%99%A8%E8%80%8C%E4%B8%8D%E6%98%AF%E2%80%9CC%3A%E2%80%9D%E9%A9%B1%E5%8A%A8%E5%99%A8%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F.png)
看http://technet.microsoft.com/en-us/library/ff715408.aspxfor FirstLogonCommand
,如何指定CommandLine
for操作系统启动驱动器不要像示例那样只使用“C:”。操作系统启动驱动器可能不是“C:”。
更新:我正在使用 C++ 编写 XML,并且将要运行的程序也是用 C++ 编写的。
答案1
有趣的问题。微软没有提供任何帮助(一如既往)。
%SystemDrive% 环境变量通常是在脚本等中使用的,但这实际上不是一个脚本。
坦白说,我不知道它是否会在这种特殊的边缘情况下发挥作用。
如果系统将 XML 中的内容直接传递给 cmd.exe,它就会起作用。
如果不扩展环境变量,直接进入 Windows-API 的 exec() 调用,那么它是否会起作用就值得怀疑了。
您只需尝试一下即可。由于运行时没有视觉反馈,我建议您运行在已知位置写入日志文件的程序,这样您就可以确定它是否有效。
我想到另一个解决方案:假设在运行时,当前驱动器就是操作系统驱动器,那么您可能根本不需要指定驱动器。只需使用驱动器顶部的完整部分,而无需驱动器号和冒号。
例如:\synccommands\run1.exe
让我们知道结果如何。我个人对其中一种解决方案是否有效很感兴趣,但我没有时间也没有设备亲自进行实验。
答案2
该%SystemDrive%
环境变量设置为 Windows 中的操作系统驱动器,可以替换为大多数命令。