0

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

我使用内置命令行并通过传递“shutdown.exe -t 0 -r”来重新启动或“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 服务中执行时它不起作用。

4

2 回答 2

2
于 2015-11-24T10:03:50.810 回答
1

我猜您的服务没有关闭电脑的权限(我猜欠权限的用户是网络用户,不能这样做)。查看事件日志了解详细信息,我很确定它包含您问题的答案。

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

于 2015-11-24T06:41:07.307 回答