从WCF服务关闭或重新启动计算机不起作用

时间:2015-11-24 06:26:42

标签: wcf acl wcfserviceclient

我在IIS 7.5中托管的WCF服务中有一个函数,它在关闭任务时关闭或重新启动计算机。

我使用内置命令行并通过将“shutdown.exe -t 0 -r”传递给restart或“shutdown.exe -t 0 -s”来关闭来执行它。

    Try
        Using process As New System.Diagnostics.Process()
            Dim startInfo As New System.Diagnostics.ProcessStartInfo()
            With startInfo
                .WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
                .CreateNoWindow = True
                .UseShellExecute = False
                .RedirectStandardError = True
                .RedirectStandardInput = True
                .RedirectStandardOutput = True
                .FileName = "shutdown.exe"
                .Arguments = "-t 0 -r"
            End With
            If System.Environment.OSVersion.Version.Major >= 6 Then process.StartInfo.Verb = "runas"
            process.StartInfo = startInfo
            process.Start()
            process.WaitForExit()
            If process.ExitCode = 0 Then
                Return True
            Else
                Return False
            End If
        End Using
    Catch ex As Exception
        Return False
    End Try

如果在命令提示符下手动执行,命令行可以正常工作。但是,当它在WCF服务中执行时,它不起作用。

2 个答案:

答案 0 :(得分:2)

好的,尝试所有事情并保持失败,然后结束this guy who use bat file。它有效..!

它太奇怪了,但仍然不知道它为什么会起作用。现在......谁在乎:)以后......当我有空闲时间时,我会试着想出来。

        ....
        Dim strCmd As String = "SHUTDOWN -m {0} -f -t 0 -r"           
        File.WriteAllText(_pathCmd & "cmd_restart.bat", String.Format(strCmd, "127.0.0.1"))
        Return ExecuteCommand(_pathCmd & "cmd_restart.bat", "")

答案 1 :(得分:1)

我猜你的服务没有关闭pc的权限(我想拥有权限的用户是网络用户,不能这样做)。 Check out Event Log for details,我很确定它包含您问题的答案。

查看there如何在特定帐户下运行wcf服务。