我有一项服务需要在将新文件复制到目录时调用批处理。我尝试使用CreateProcess
, ShellExecute
, ShellExecuteEx
乃至system
。我尝试直接调用批处理,然后调用cmd.exe
并经过/c batchfile
作为参数...什么都没有。
我将服务设置为以管理员身份运行。我和其他用户一起尝试过。没有什么。
这是 Windows 2008 服务器。
有任何想法吗?
谢谢。
创建进程 http://msdn.microsoft.com/en-us/library/ms682425%28v=vs.85%29.aspx,如下面的(非常简化的)示例所示,是从服务执行批处理文件的有效方法。
STARTUPINFO si = { 0 };
PROCESS_INFORMATION pi = { 0 };
si.cb = sizeof(si);
if( !CreateProcessA( NULL,
"C:\\test.bat",
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi
) )
{
char msg[100];
sprintf( msg, "CreateProcess() failed: %d", GetLastError() );
OutputDebugStringA( msg );
}
日志记录是关键。如果批处理文件没有被执行,CreateProcess() 会告诉你原因。
您提到批处理文件将在“将新文件复制到目录时”执行。您是否确认检测代码工作正常?尝试执行批处理文件的代码是否确实达到了?
更多背景肯定会有所帮助。请发布批处理文件和服务代码的相关部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)