Process.Start()不适用于Windows 2012 R2

时间:2016-06-16 04:58:22

标签: .net vb.net windows windows-server-2012

我的Process.Start()实现在Windows 2012 R2中不起作用

我在Windows 2012服务器上部署了Windows服务。在Windows服务中,我尝试使用Process.Start(fileName)调用一个Batch(.bat)文件。

运行服务时,无法调用批处理文件。

我将NoInteractiveServices的更改设置为0并取消阻止所有文件..但没有运气..

任何人都有不同的解决方案??

Private Function RunTask(ByVal sPath As String, ByVal sArgs As String, ByVal fLog As Boolean) As Boolean 
     Dim targetProcess As Process 

     Try 
          targetProcess = Process.Start(sPath, sArgs) 
     Catch ex As Exception 
          WriteToLog("Can not start process '" + sPath + "' - " + ex.Message) 
         Return False 
      End Try 

      If fLog = True Then 
         WriteToLog("Started process '" + sPath + "' with args '" + sArgs + "'") 
      End If 

      Return True 
 End Function 

它调用批处理文件,然后继续代码下面的代码:

--> net stop "Exstream Monitor"

2 个答案:

答案 0 :(得分:2)

  

在Windows 2012服务器上部署了Windows服务... process.start(bat文件名)。

  1. 服务流程是否具有相关文件的访问权限?
  2. CreateNoWindow的属性设置为trueUseShellExecute是否设为false
  3. 服务代码是否捕获所有异常并将该信息发送到日志或系统事件?
  4. 代码可以避免GUI弹出窗口或任何/所有与GUI相关的任务吗?
  5. 可以手动运行bat文件并且它可以正常运行,还是无声地失败?

答案 1 :(得分:1)

  1. NoInteractiveServices设置为0

  2. 包含允许以批量身份登录的服务帐户,作为服务,允许远程访问。

  3. 提供对c:\ windows \ temp

  4. 的完全访问权限
  5. 提供了对目录/文件的完全访问权限

  6. 并重新启动服务器,它解决了这个问题。

相关问题