小编Tre*_*eed的帖子

使用CreateFile打开目录

我试图利用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来实现。

c# directory winapi createfile

3
推荐指数
1
解决办法
3474
查看次数

标签 统计

c# ×1

createfile ×1

directory ×1

winapi ×1