【发布时间】:2019-02-02 02:44:37
【问题描述】:
希望这是一个有效的问题。
这是我维护的遗留代码。
Windows 服务(以 SYSTEM 或“专用服务用户”身份登录)将执行可移植的 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();
当我使用命令行参数执行 python.exe(作为“专用服务用户”并且使用 psexec 作为 SYSTEM)时,它起作用了。
调用 GetLastError() 或 Marshal.GetLastWin32Error() 返回 0。
事件查看器(应用程序、系统、安全)中没有任何内容
我用进程监视器捕获了 2 个执行,一个有效,一个无效。两次执行都显示 python.exe 已启动,之后当然有数千次调用.. 我想调查什么?如何查看安全策略是否阻止了我的 exe?
谢谢。
【问题讨论】:
-
进程监视器(可从 Microsoft 网站获得)可能会有所帮助。
-
如果你只是想知道为什么启动失败,也许你可以在windows事件日志中找到一些线索
-
事件查看器中没有任何内容。也没有杀毒软件。
-
pyc 的路径是相对的还是绝对的?
-
@ilansch 如果 pyc 在本地驱动器中会有所不同吗?
标签: c# windows service process process.start