![]() |
1
2
另外,检查返回值并调用
一旦您正确地调用函数,并且新流程开始但没有进展,您就可以合理地确定 这 代码不是罪魁祸首。问题在于新进程,因此请将调试任务集中在那里,而不是服务进程中。 |
![]() |
2
0
在更新和编辑之后,当从服务启动进程时,这听起来像是许多可能的陷阱之一。您的外部流程是否有任何可能正在等待用户交互?我可以想到三个主要的例子,一个是命令行应用程序,在某些情况下可能需要键盘输入(例如,“cmd/c del*.*”等需要用户确认)。如果应用程序需要一个窗口,并且正在显示它,但您看不到它,那么其他示例也适用。如果是这种情况,您可能希望在调试时将服务设置为“与桌面交互”,然后能够看到应用程序窗口(或意外的Windows错误消息,如找不到dll或类似消息)。 如果这有助于您调试或不调试,通常是“A-HA!”时刻来自于认识到环境变量、路径、当前目录等可能不是您期望的服务中的内容。权限不是此类问题的最常见原因。您能提供一些关于您试图启动的外部应用程序的详细信息吗,也许这有助于您思考这个问题。 |
![]() |
3
0
因为您正在启动一个控制台应用程序,所以可能有隐藏的启动代码试图初始化一个控制台。一个服务没有连接到桌面上,我确信该服务启动的进程也不会是这样,因此它将无法创建控制台。这可能就是它悬挂的地方。 如果可以,请尝试将进程更改为完整的Windows可执行文件,但跳过尝试创建窗口的部分。 |