我有C ++ Windows服务,通过popen函数执行批处理脚本。
FILE *fp;
fp = popen( "C:\\temp\\script.bat", "w" );
fclose(fp);
script.bat只执行重定向到文件的echo命令。
echo Hello > c:\temp\output.txt
但是在通过服务output.txt文件执行此脚本后,不是创建了(但是生成了新进程 - 例如,我可以通过Process Explorer看到它。)
当然,如果我像处理那样执行这个c ++代码,它就能正常工作。
但是让我们回来服务吧。有趣的是,如果我将 @echo off 添加到script.bat中,那么即使作为服务,一切都能正常工作(我的意思是创建了output.txt文件)。
@echo off
echo Hello > c:\temp\output.txt
是否与某些策略相关,Windows服务无法执行打印输出的脚本?或者我应该配置什么?