使用管理员权限启动流程并重定向其输出

时间:2015-10-18 08:09:41

标签: vb.net process console-application uac

我想启动一个进程,这是一个请求管理员权限的控制台应用程序(level="requireAdministrator")。实际上,我要将UseShellExecute属性设置为True以显示UAC请求,但我还想重定向其输出。问题是,要重定向流程输出,我们必须将UseShellExecute属性设置为False ...

这是我目前的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim admin As Boolean

    Using p As New Process With {
        .StartInfo = New ProcessStartInfo With {
            .FileName = "D:\Drarig29\Documents\Visual Studio 2013\Projects\AdminRightsConsole\Console\bin\Release\Console.exe",
            .RedirectStandardOutput = True,
            .UseShellExecute = False,
            .WindowStyle = ProcessWindowStyle.Hidden,
            .CreateNoWindow = True}}
        p.Start()
        Using s As StreamReader = p.StandardOutput
            admin = s.ReadToEnd.Trim()
        End Using
    End Using

    If Button1.Text = "Enable" Then
        If admin Then
            Button1.Text = "Disable"
        End If
    Else
        If admin Then
            Button1.Text = "Enable"
        End If
    End If
End Sub

如何显示UAC请求并同时重定向流程的输出?

编辑:控制台应用程序在Boolean中写入Standard Output。如果它具有管理员权限,则返回True,如果没有,则返回False

0 个答案:

没有答案