Tag: 目录下的

使用CreateFile打开目录

我正在尝试使用CreateFile函数来访问目录信息。 我收到的win32错误代码为5,这意味着拒绝访问。 请指教。 CreateFile(path, GENERIC_READ, FILE_SHARE_READ, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero); 这是正在进行的调用,并且如文档中所述,正在使用’FILE_FLAG_BACKUP_SEMANTICS’。 DLL导入似乎工作正常,如下所示: [DllImport(“kernel32.dll”, SetLastError = true)] public static extern IntPtr CreateFile(string filename, uint desiredAccess, uint sharedMode, IntPtr securityAttributes, uint creationDisposition, uint flagsAndAttributes, IntPtr templateFile); 更新:我需要获取目录的句柄,以便我可以使用GetFileInformationByHandle()并提取唯一ID。 此方法目前适用于文件,目前无法使用目录。 更新:此问题的X是我需要一个目录的唯一标识符,该标识符不是其绝对路径。 即使移动或重命名目录,它也需要保持不变。 .NET没有提供刚刚提到的任何唯一标识符,只能通过使用win32来完成

C#代码,用于设置远程共享以从其父目录inheritance权限

我在Windows域中有两台计算机,称为客户端和服务器。 服务器有一个共享目录,可以从客户端计算机访问。 我想在客户端上运行C#应用程序,该应用程序设置此共享的权限以inheritance服务器上共享的父目录的权限。 我该怎么做呢? 我已尝试过以下几行代码,但我认为它没有正确的效果: DirectoryInfo shareDirectoryInfo = new DirectoryInfo(“\\server\share”); DirectorySecurity directorySecurity = shareDirectoryInfo.GetAccessControl(); directorySecurity.SetAccessRuleProtection(false, false); InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; FileSystemAccessRule accessRule = new FileSystemAccessRule(“Everyone”, FileSystemRights.FullControl, iFlags, PropagationFlags.InheritOnly, AccessControlType.Allow); bool modified; directorySecurity.ModifyAccessRule(AccessControlModification.Set, accessRule, out modified); if (modified) { Directory.SetAccessControl(name, directorySecurity); } 我想我不明白为什么我必须为目录创建一个FileSystemAccessRule – 我怎么能说从父进行inheritance呢? 谢谢你的帮助! 马丁