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 ページは、現在のユーザーとは異なる ID で実行されます。これは、コードを最初に実行したときにネットワーク パスが正常にマップされる可能性があることを意味します。その後、2回目に実行すると、そのエラーが発生します。

cmdしかし、ドライブがユーザーIDを介してマップされていないため(cmdウィンドウが実行されているため)、ウィンドウ内のその文字のマッピングを削除するのは無駄です

net次に、別のエラーがスローされた可能性がありますが、コマンドを実行するために必要なアクセス許可もあります。

于 2012-11-28T16:14:52.367 に答える