我需要在映射的网络驱动器上创建一个目录.我正在使用代码:
DirectoryInfo targetDirectory = new DirectoryInfo(path); if (targetDirectory != null) { targetDirectory.Create(); }
如果我指定"\\\\ ServerName \\ Directory"之类的路径,那一切都会好的.如果我将"\\ ServerName\Directory"映射为驱动器Z:,并指定路径"Z:\\",则失败.
创建targetDirectory对象后,VS显示(在调试模式下)targetDirectory.Exists = false,并尝试执行targetDirectory.Create()会引发异常:
System.IO.DirectoryNotFoundException: "Could not find a part of the path 'Z:\'."
但是,相同的代码适用于本地目录,例如C:.
该应用程序是Windows服务(WinXP Pro,SP2,.NET 2),与映射驱动器的用户在同一帐户下运行.Qwinsta回复用户的会话是会话0,因此它与服务的会话相同.
映射的网络驱动器是特定于用户的,因此如果应用程序以不同于创建映射驱动器号(z :)的用户的身份运行,则它将无法工作.
基于这个事实,映射的驱动器号不起作用,简单的解决方案是键入完整的网络路径.
阿卡,
我的R:/
驱动器已映射到\\myserver\files\myapp\
所以不要使用
"R:/" + "photos"
使用
"\\myserver\files\myapp\" + "photos"