0

在命令行中它工作正常: net USE T: \123.45.67.89\TEST mytestuser /user:MYTESTUSER

但是使用asp.net,使用以下代码,映射驱动器时总是抛出具有以下错误的异常:'本地设备名称已在使用中'

我尝试先断开所有驱动器的连接,映射到不同的驱动器号。我已经不同的服务器和不同的服务器完成了这个

肯定是驱动器号的问题吗?

temp = MapDrive("T", "\\123.45.67.89\TEST", "MYTESTUSER", "mytestuser")


Public Shared Function MapDrive(ByVal DriveLetter As String, ByVal Path As String, ByVal Username As String, ByVal Password As String) As Boolean


    Dim ReturnValue As Boolean = False

    Dim p As New System.Diagnostics.Process()
    p.StartInfo.UseShellExecute = False
    p.StartInfo.CreateNoWindow = True
    p.StartInfo.RedirectStandardError = True
    p.StartInfo.RedirectStandardOutput = True
    p.StartInfo.FileName = "net.exe"
    p.StartInfo.Arguments = " use " & DriveLetter & ": " & Path & " /user:" & Username & " " & Password & " /persistent:yes"
    p.Start()
    p.WaitForExit()
    Dim ErrorMessage As String = p.StandardError.ReadToEnd()
    Dim OuputMessage As String = p.StandardOutput.ReadToEnd()
    Dim StoreFile As System.IO.Directory
    Dim Files As String()
    Dim File As String


If ErrorMessage.Length > 0 Then
        Throw New Exception("Error:" & ErrorMessage)

    Else
        ReturnValue = True
    End If

     Files = StoreFile.GetFiles("T:\FINDTHIS\", "*")


     For Each File In Files

        HttpContext.Current.Trace.Warn(File)
     Next


    Return ReturnValue
End Function
4

1 回答 1

0

映射驱动器不是特定于运行net命令的用户吗?

您的 asp.net 页面通常以与当前用户不同的身份运行。这意味着您的代码可能会在您第一次运行时成功映射网络路径。然后,当您第二次运行它时,您将收到该错误。

但是随后您徒劳地寻找删除cmd窗口中该字母的映射,因为驱动器不是通过您的用户身份映射的(cmd毕竟您的窗口正在运行)

然后还有运行net命令所需的权限,尽管这可能会引发不同的错误。

于 2012-11-28T16:14:52.367 回答