C#指令连接NAS是为了方便程序存储数据时,直接存储到NAS网盘中。特别是需要把数据存入不同权限用户的目录下。
实现方式是通过cmd.exe命令窗,下发指令。
一、C#调用cmd.exe及下发NAS相关指令
/// <summary>
/// NAS网盘
/// </summary>
public static class NasNet
{
/// <summary>
/// 连接网络硬盘,diskName网盘名如s,nasIPAddr网盘地址如\\1.1.1.1\cc,nasUserName用户名,nasPassword密码
/// </summary>
/// <param name="diskName">盘符</param>
/// <param name="nasIPAddr">网盘地址</param>
/// <param name="nasUserName">网盘用户名</param>
/// <param name="nasPassword">网盘密码</param>
public static void Connect(string diskName, string nasIPAddr, string nasUserName,string nasPassword)
{
string cmdStr = string.Format("net use {0}: {1} \"{2}\" /user:\"{3}\" >NUL", diskName, nasIPAddr, nasPassword, nasUserName);
WriteCmd(cmdStr);
}
/// <summary>
/// 断开映射
/// </summary>
/// <param name="diskName"></param>
public static void Disconnect(string diskName)
{
string cmdStr = string.Format(@"net use {0}: /delete >NUL", diskName);
WriteCmd(cmdStr);
}
/// <summary>
/// 写指令
/// </summary>
/// <param name="cmd"></param>
/// <returns></returns>
private static bool WriteCmd(string cmd)
{
bool flag = true;
Process pro = new Process();
pro.StartInfo.FileName = "cmd.exe";
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.RedirectStandardError = true;
pro.StartInfo.CreateNoWindow = true;
try
{
pro.Start();
pro.StandardInput.WriteLine(cmd);
string cmdExit="exit";
pro.StandardInput.WriteLine(cmdExit);
while (pro.HasExited==false)
{
pro.WaitForExit(1000);
}
string error = pro.StandardError.ReadToEnd();
if (error != "")
flag = false;
pro.StandardError.Close();
return flag;
}
catch (Exception e)
{
throw e;
}
finally
{
pro.Close();
pro.Dispose();
}
}
}
二、调用举例
//断开连接
NasNet.Disconnect("S");
//映射连接
NasNet.Connect("S", @"\\172.18.11.123\Private\SMES", "user", "password");
注:
1、账号密码需正确;
2、nasIPAddr网盘地址需正确,即已经创建(存在)这个文件夹;
3、地址目录文件夹需要有登录账号对应的权限才能访问。不然就是会被拒绝访问。
网友评论