2013-03-08 32 views
0

如何将.NET代码映射到帐户SVNdatamgmt的UNC路径的Z:驱动器?可以从命令行映射UNC路径,但不能从.NET映射控制台应用程序

我试图将本地驱动器映射到.NET控制台应用程序内的网络UNC路径。该代码似乎可以从服务帐户(#2和#3)的命令行以及我的凭据(#4)工作。但是,当使用.NET源代码从控制台应用程序运行时,服务帐户不起作用(#5),但是我的凭据可以工作(#6)。

昨晚,我注意到我有一个错误(#1)。等待30分钟后,它就起作用了。所以你可以忽略#1。我想我会提到它,以防万一它提供了有关正在发生的事情的线索。

控制台应用程序以Windows Server 2008框的管理员身份运行。 SVCdatamgmt和macgyver都是这台机器上的管理员。这些命令也在同一台机器上运行。

============================================== ==========================
1)这不,昨晚工作:

C:>net use z: \\uwhc-sas2\SASHIMC /USER:SVCdatamgmt thepassword

System error 1909 has occurred. 
The referenced account is currently locked out and may not be logged on to. 

========================================== ==============================
2.)等待30分钟,然后t他的工作(不域):

C:>net use z: \\uwhc-sas2\SASHIMC /USER:SVCdatamgmt thepassword

The command completed successfully. 

========================== ==============================================
3。)这也适用(与结构域):

C:>net use z: \\uwhc-sas2\SASHIMC /USER:UWHIS\SVCdatamgmt thepassword

The command completed successfully. 

============================================== ==========================
4)这也适用于我的凭据:

C:>net use z: \\uwhc-sas2\SASHIMC /USER:macgyver thepassword

The command completed successfully. 

=========================================== =============================
5.).NET代码映射d里沃。 SVCdatamgmt凭据不起作用。

public static void MapNetworkDriveToUNC() 
{ 
    var command = @"net use " + mapDrive + " " + uncPath + " " + uncUser + " " + uncPass; 
    ExecuteCommand(command, 10000); 
} 

public static void UnmapNetworkDriveToUNC() 
{ 
    var command = "net use " + mapDrive + " /delete"; 
    ExecuteCommand(command, 5000); 
} 

========================================= ===============================
6.)映射驱动器的.NET代码。我的工作凭证(百战天龙)

- 相同的代码#5 -

========================= ===============================================
FYI:运行上面的每个命令之前,我已经使用此代码断开(取消映射)驱动器...

C:\>net use z: /delete 

z: was deleted successfully. 

回答

1

我一直在寻找的命令UNC路径从C#映射到网络驱动器,我实现了这个并且效果很好。为时已晚,但可能会有所帮助的人在未来:

public static bool MapDrivetoUNC(string DriveName, string Path) 
    { 
    try 
    { 
     bool isMapped = true; 

     System.Diagnostics.Process p = 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 " + DriveName + ": " + '"' + Path + '"'; 
     p.Start(); 
     p.WaitForExit(); 

     //str errMsg = p.StandardError.ReadToEnd(); 
     // similar for erroutput .. 
     isMapped = true; 
    } 
    catch(Exception ex) 
    { 
     Utility.logError(ex); 
     isMapped = false; 
    } 
    return isMapped; 
    } 
+0

我实现了这个:NET USE Z:\\路径\路径\路径/ USER:the_user the_password ......并删除它,我这样做:净使用Z:/删除 – MacGyver 2013-12-09 17:09:55