Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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
C# 如何调查Process.Start()失败?_C#_Windows_Service_Process_Process.start - Fatal编程技术网

C# 如何调查Process.Start()失败?

C# 如何调查Process.Start()失败?,c#,windows,service,process,process.start,C#,Windows,Service,Process,Process.start,希望这是一个有效的问题。 这是我维护的旧代码。 Windows服务(以系统或“专用服务用户”身份登录)将执行可移植的python exe,即python.exe运行代码(.pyc),并带有其他参数 问题: Process.Start()没有抛出异常,并且返回false,有没有办法调查原因?请不要粘贴MSDN文档,因为我已经阅读了足够多的时间。 我尝试使用UseShellExecute true/false执行python,这不重要,也不起作用 C#Windows服务代码: var process

希望这是一个有效的问题。
这是我维护的旧代码。
Windows服务(以系统或“专用服务用户”身份登录)将执行可移植的python exe,即python.exe运行代码(.pyc),并带有其他参数

问题:
Process.Start()没有抛出异常,并且返回false,有没有办法调查原因?请不要粘贴MSDN文档,因为我已经阅读了足够多的时间。
我尝试使用UseShellExecute true/false执行python,这不重要,也不起作用

C#Windows服务代码:

var processInfo = new ProcessStartInfo(_pythonExePath/*path to python.exe*/, exeParams/*path to pyc, and additionl params*/)
{
    WorkingDirectory = workingDirectory
};
var process = new Process
{
    StartInfo = processStartInfo,
    EnableRaisingEvents = true
};
process.Start();
当我使用命令行中的参数(作为“专用服务用户”和psexec作为系统)执行python.exe时,它工作了

调用GetLastError()或封送。GetLastWin32Error()返回0。
事件查看器中没有任何内容(应用程序、系统、安全性)

我用process monitor捕获了两个执行,一个有效,一个无效。两次执行都显示python.exe已启动,之后当然会有数千次调用。。我应该调查什么?如何查看安全策略是否阻止了我的exe


谢谢。

检查文档中的返回值

如果流程资源已启动,则为true;如果未启动新流程资源(例如,如果重用现有流程),则为false

因此
false
不一定表示
过程中发生错误;如果有错误,它应该抛出一个异常,它不会只是设置一个错误代码,然后静默地转到下一行


正如Harry在评论中所建议的,使用来监视
python.exe
是一个好的开始

Process Monitor(可从Microsoft网站获得)可能会有所帮助。如果您只需要知道某些东西无法启动的原因,也许您可以在windows事件日志中找到一些线索事件查看器中没有任何内容。也没有防病毒。pyc的路径是相对的还是绝对的?@ilansch如果pyc在本地驱动器中会有区别吗?如果我的进程没有启动,或者没有立即启动和停止,我会在procmon上看到它吗?如果您的代码无法启动python.exe,应该会出现异常,如果未处理,将导致Windows服务崩溃。ProcMon只记录进程所做的一切,即使该进程只存在几毫秒。已获取进程监视器输出。进程已启动,映像已创建,进程为何启动。启动返回false?@ilansch false表示重用现有进程。Microsoft Word表现出相同的行为,当您打开第二个Word文档时,当已经打开一个文档时,相同的Word应用程序被激活,而不是启动新的Word应用程序。我知道,VM上没有现有的python.exe进程实例。此外,我在process monitor上看到了一个Create image命令,该命令在执行后带有python.exe。