2

我有问题

当我想访问目录安全并且我的路径长度超过 260 个字符时,我从这个链接得到了解决方案

http://blogs.msdn.com/b/bclteam/archive/2007/03/26/long-paths-in-net-part-2-of-3-long-path-workarounds-kim-hamilton.aspx

但是,当我尝试访问目录的 GetAccessControl() 时,它会给出错误没有实现,所以我想为 GetAccessControl() 或您拥有的任何其他解决方案实现非托管代码

[DllImport("mscorlib.dll", CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.I4)]
static extern int GetAccessControl(string lpPathName, IntPtr lpSecurityAttributes);

public static int GetAccess(string dirPath)
{
    return GetAccessControl(@"\\?\" + dirPath, IntPtr.Zero);

}

派生自此类 System.Security.AccessControl.DirectorySecurity

4

2 回答 2

0

请检查这个库,它对我来说更适合长路工作

链接在这里

于 2014-04-23T19:06:05.360 回答
0

你可以在这里看看彼得的图书馆。这将帮助您System.IO.PathTooLongException

LongPaths 允许您的代码通过提供以下System.IO类型的替换来支持长路径:FileInfo, DirectoryInfo, FileSystemInfo, FileInfo, DirectoryInfo,FileSystemInfo

就像您可以用System.IO以下别名替换类型

using Path = Pri.LongPath.Path;
using Directory = Pri.LongPath.Directory;
using DirectoryInfo = Pri.LongPath.DirectoryInfo;
using File = Pri.LongPath.File;
using FileSystemInfo = Pri.LongPath.FileSystemInfo;

我希望这有帮助。

于 2014-08-30T16:28:58.417 回答