1、磁盘映射以后,我现在要断开磁盘映射了,
但是,映射得那个文件夹依旧可以访问,只是不在本地显示了,
我想问
怎么做能断开得同时,不再被授权进入这个文件夹
1、现在有一个新问题,那个问题很奇怪,我磁盘映射账号密码都没有问题,
但是部署到别的电脑上的时候,显示账号密码不正确,
我用的是回复中的代码,先连接,后断开,这种情况是怎么发生的。
代码中是怎么断开连接的?
[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; }
@一首歌听到忘世: 试试调用命令net use /delete
断开连接,stackoverflow上的参考资料:How to close connection properly with WNetCancelConnection2?
@dudu: 多谢,搞定了, 耐心看完英文。。简直有收获。。跪拜,就是,断开的时间有点久。不是立即的。。差不多15秒左右。。人工计时。
这个功能貌似和快捷方式是一个逻辑,你断开后并没对访问地址做任何变更。如果要解决的话我感觉只能改权限或者奇葩点的给文件夹重命名~~~
改权限这个,给了一个思路,在连接时候,权限设置可读写,等断开连接得时候,设置成不可读写,
。。。