我试图利用CreateFile函数来访问目录信息。我收到的Win32错误代码为5,这意味着访问被拒绝。请指教。
CreateFile(path, GENERIC_READ, FILE_SHARE_READ, IntPtr.Zero, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)
这是正在进行的调用,如文档中所述,正在使用“ 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);
Run Code Online (Sandbox Code Playgroud)
更新:我需要获取目录的句柄,以便可以使用GetFileInformationByHandle()并提取唯一的ID。该方法当前适用于文件,当前不适用于目录。
更新:这个问题的X是我需要一个目录的唯一标识符,该标识符不是其绝对路径。即使目录已移动或重命名,它也必须保持不变。如上所述,.NET不提供任何唯一标识符,只能使用win32来实现。