我正在尝试将ACL(权限)从源文件夹复制到目标位置。文件夹路径是长路径,因此不能使用.net内置函数。
我正在使用GetNamedSecurityInfo
读取源文件夹的ACl,并使用SetNamedSecurityInfo
编写ACL。
我想在目标上关闭ACL继承以匹配源,但是SetNamedSecurityInfo
始终启用继承。
我们可以使用以下.Net内置方法禁用常规路径(非长路径)的继承。请提出一些win32 COM API(pinvoke)的方法来实现长路径。
DirectorySecurity dSecurityOut = System.IO.Directory.GetAccessControl(destinationNormalPath);
dSecurityOut.SetAccessRuleProtection(true,false);
System.IO.Directory.SetAccessControl(destinationNormalPath, dSecurityOut);