美文网首页
C#指令连接NAS,NAS拒绝访问问题

C#指令连接NAS,NAS拒绝访问问题

作者: 堆石成山 | 来源:发表于2023-05-12 17:24 被阅读0次

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、地址目录文件夹需要有登录账号对应的权限才能访问。不然就是会被拒绝访问。

相关文章

网友评论

      本文标题:C#指令连接NAS,NAS拒绝访问问题

      本文链接:https://www.haomeiwen.com/subject/zboesdtx.html