首页 新闻 会员 周边 捐助

C#磁盘映射,部署到其他电脑的时候,显示用户名密码不正确,问一下,这是什么情况

0
[已解决问题] 解决于 2018-01-10 14:22

1、磁盘映射以后,我现在要断开磁盘映射了,

但是,映射得那个文件夹依旧可以访问,只是不在本地显示了,

我想问

怎么做能断开得同时,不再被授权进入这个文件夹

问题补充:

1、现在有一个新问题,那个问题很奇怪,我磁盘映射账号密码都没有问题,

但是部署到别的电脑上的时候,显示账号密码不正确,

我用的是回复中的代码,先连接,后断开,这种情况是怎么发生的。

一首歌听到忘世的主页 一首歌听到忘世 | 初学一级 | 园豆:138
提问于:2017-12-19 17:21
< >
分享
最佳答案
0

代码中是怎么断开连接的?

奖励园豆:5
dudu | 高人七级 |园豆:29542 | 2017-12-19 18:33
[DllImport("mpr.dll", CharSet = CharSet.Ansi)]
        private static extern int WNetAddConnection2(NetResource netResource, string password, string username, int flag);
        [DllImport("mpr.dll", CharSet = CharSet.Ansi)]
        private static extern int WNetCancelConnection2(string lpname, int flag, bool force);
        /// <summary>
        /// 映射网络驱动器
        /// </summary>
        /// <param name="localName">本地盘符 如U:</param>
        /// <param name="remotePath">远程路经 如\\\\172.18.118.106\\f</param>
        /// <param name="userName">远程服务器用户名</param>
        /// <param name="password">远程服务器密码</param>
        /// <returns>true映射成功,false映射失败</returns>
        public static bool WNetReflectDrive(string localName, string remotePath, string userName, string password)
        {
            NetResource netResource = new NetResource();
            netResource.dwScope = 2;
            netResource.dwType = 0x1;
            netResource.dwDisplayType = 3;
            netResource.dwUsage = 1;
            netResource.LocalName = localName;
            netResource.RemoteName = remotePath;
            netResource.provider = null;
            int ret = WNetAddConnection2(netResource, password, userName, 0);
            if (ret == 0)
                return true;
            return false;
        }

        /// <summary>
        /// 断开网路驱动器
        /// </summary>
        /// <param name="lpName">映射的盘符</param>
        /// <param name="flag">true时如果打开映射盘文件夹,也会断开,返回成功 false时打开映射盘文件夹,返回失败</param>
        /// <returns></returns>
        public static bool WNetDisconnectDrive(string lpName, bool flag)
        {
            int ret = WNetCancelConnection2(lpName, 0, flag);
            if (ret == 0)
                return true;
            return false;
        }

 

一首歌听到忘世 | 园豆:138 (初学一级) | 2017-12-19 18:44

@一首歌听到忘世: 试试调用命令net use /delete断开连接,stackoverflow上的参考资料:How to close connection properly with WNetCancelConnection2?

dudu | 园豆:29542 (高人七级) | 2017-12-19 18:51

@dudu: 多谢,搞定了,  耐心看完英文。。简直有收获。。跪拜,就是,断开的时间有点久。不是立即的。。差不多15秒左右。。人工计时。

一首歌听到忘世 | 园豆:138 (初学一级) | 2018-01-10 14:22
其他回答(1)
0

这个功能貌似和快捷方式是一个逻辑,你断开后并没对访问地址做任何变更。如果要解决的话我感觉只能改权限或者奇葩点的给文件夹重命名~~~

Daniel Cai | 园豆:10424 (专家六级) | 2017-12-19 17:37

改权限这个,给了一个思路,在连接时候,权限设置可读写,等断开连接得时候,设置成不可读写,

。。。

支持(0) 反对(0) 一首歌听到忘世 | 园豆:138 (初学一级) | 2017-12-19 17:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册