gpt4 book ai didi

c# - 如何强制 Windows 重新连接到网络驱动器

转载 作者:可可西里 更新时间:2023-11-01 12:43:45 28 4
gpt4 key购买 nike

我们尝试访问网络目录中的目录,但得到错误的结果 (C#/Windows):

var exists = Directory.Exists("Z:\\Sessions\\Data1");

“Z”是网络目录,“Sessions”是录音软件不断创建目录(如“Data1”)并放入一些数据的目录。Windows 似乎缓存了有关 Data1 的错误状态:该方法返回 false。但是当我通过资源管理器访问目录时,它就在这里。当我在使用资源管理器访问目录后运行方法 (Directory.Exists) 时,它返回 true。当然我可以保证目录在第一次尝试时确实存在。

这种行为的原因是什么?我该怎么办?

编辑:Windows 似乎无法将网络驱动器连接到远程计算机。当我尝试使用资源管理器导航到目录时,它会自动尝试连接驱动器。

所以问题变了:有没有办法强制 Windows 尝试通过 .NET 重新连接?

解决方案: Reconnecting a disconnected network drive

最佳答案

我不确定上面的解决方案链接适用于哪个版本的 mpr.dll,但我使用的是 Win7 并且版本略有不同(尽管相似)。这个入口点是:

    [DllImport("mpr.dll", SetLastError = true, EntryPoint = "WNetRestoreSingleConnectionW", CharSet = CharSet.Unicode)]
internal static extern int WNetRestoreSingleConnection( IntPtr windowHandle,
[MarshalAs(UnmanagedType.LPWStr)] string localDrive,
[MarshalAs(UnmanagedType.Bool)] bool useUI);

然后:

IntPtr hWnd = new IntPtr(0);
int res = WNetRestoreSingleConnection(hWnd, <your drive path>, false);

您必须添加自己的错误检查/处理。

关于c# - 如何强制 Windows 重新连接到网络驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com