【问题标题】:Process.Start() silently refuses to startProcess.Start() 静默拒绝启动
【发布时间】:2015-04-21 11:33:58
【问题描述】:

我有一个 Windows 服务,其任务是在预定时间到达时运行 .exe 文件。该程序在我安装了我的程序的所有设备下都可以运行。运行该服务的用户拥有所有必需的管理权限。

这是程序运行.exe 文件的代码。 Log() 函数将消息写入日志文件。

Log("About to run the file...");
try
{
    Process.Start(filePath, args);
    Log("File Triggered!");
}
catch (Exception ex)
{
    Log("Error.");
}

发生的情况是程序一直运行,直到记录“关于运行文件...”,然后什么也没有发生,也没有记录。知道完全相同的程序在我测试过的所有其他环境中都能正常工作,这很奇怪。

Process.Start() 是否有可能无声无息地拒绝运行我的.exe 文件?目标.exe 文件与正在运行的服务放置在完全相同的文件夹中,因此不会有问题。

我的服务的 Log On 用户是否没有运行此文件的权限?如果是这样,为什么我们没有在日志中收到“错误”消息?非常感谢任何帮助!

更新 1:目标操作系统是 Windows 8,我在 Windows 7 下开发了我的程序。

更新 2:我在另一台运行 Windows 8.1 的机器上尝试了该程序,它运行良好。

【问题讨论】:

  • 几年前我问过同样的问题stackoverflow.com/questions/12953148/…
  • @oleksii 我不能具体做什么?我以前用相同的程序做过。
  • @oleksii 但正如我所写的,它适用于所有其他机器。正如我们所说的,我让我的一位同事在他的机器(Windows 8.1)上运行该程序,该程序运行良好。这是该方案不起作用的唯一机器。所以请不要将此问题标记为重复,因为我还没有找到答案。
  • 据我所知,因为该过程实际开始并且调用返回成功消息。但是,Windows 会立即确定此应用程序需要 GUI,但启动它的上下文不提供 GUI 功能,并且 Windows 会终止您的进程。如果你在那台机器上调试它,你会看到进程开始行没有错误。您会看到您的File Triggered! 消息,但该过程将被该行终止。这只是 Windows 实现细节。

标签: c# process windows-services exe


【解决方案1】:

Windows Server 2012 会阻止从其他地方复制的所有文件。所以我解锁了所有的程序文件。感谢您的帮助。

【讨论】:

  • 你是如何解封这些文件的?谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-05-08
  • 2015-12-31
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
相关资源
最近更新 更多