尝试使用Process.Start打开共享时,需要提示用户输入UAC

时间:2015-04-03 17:20:23

标签: vb.net uac

如果当前用户拥有UNC路径的权限,则此方法有效。打开它。

Process.Start("\\USERSHARE\VALUE\EMPLOYEES\")

但是,由于代码中的SQL权限,我必须以无法访问UNC路径的用户身份运行整个程序。

我在应用程序中创建了一个按钮,它将在资源管理器窗口中打开UNC路径,但我无法弄清楚如何强制运行runas。

我也尝试了以下内容:

    Dim procStartInfo As New ProcessStartInfo
    Dim procExecuting As New Process

    With procStartInfo
        .UseShellExecute = True
        .FileName = "Notepad.exe"
        .WindowStyle = ProcessWindowStyle.Normal
        .Verb = "runas" 'add this to prompt for elevation
    End With

    procExecuting = Process.Start(procStartInfo)

此操作并提示UAC打开“记事本”。

这不能打开UNC路径:

    Dim procStartInfo As New ProcessStartInfo

    With procStartInfo
        .UseShellExecute = True
        .FileName = "\\USERSHARE\VALUE\EMPLOYEES\"
        .WindowStyle = ProcessWindowStyle.Normal
        .Verb = "runas" 'add this to prompt for elevation
    End With

    Process.Start(procStartInfo)

我知道打开fileshare与将.FileName指向可执行文件不同。

在尝试打开远程文件夹之前,我在尝试为UAC提示应用程序时遇到问题。

1 个答案:

答案 0 :(得分:2)

您不想执行文件夹本身,而是explorer.exe以文件夹作为参数:

Dim procStartInfo As New ProcessStartInfo

With procStartInfo
    .UseShellExecute = True
    .FileName = "explorer.exe"
    .Arguments = "\\USERSHARE\VALUE\EMPLOYEES\"
    .WindowStyle = ProcessWindowStyle.Normal
    .Verb = "runas" 'add this to prompt for elevation
End With

Process.Start(procStartInfo)