防止 Windows' 打开文件对话框检查读取权限
Prevent Windows' open file dialog from checking read permission
我正在使用 MFC 的 CFileDialog select 文件。我只对完整的文件路径感兴趣,因为我的应用程序不会直接打开它。虽然文件对话框通过声明拒绝 selecting 文件:"You don't have read permission to open this file"。 (正确 -- 我没有读取权限;我不想打开该文件。)
那么,在Windows下有没有办法使用文件对话框来获取路径?
这是我的代码:
CFileDialog dlg(true, nullptr, nullptr, OFN_FILEMUSTEXIST, nullptr, nullptr, 0, true);
dlg.DoModal();
文件打开对话框通过尝试打开文件实现 OFN_FILEMUSTEXIST
。
如果您没有打开文件的读取权限,这将失败。
解决方案是不使用 OFN_FILEMUSTEXIST
标志,并在需要时执行您自己的检查(您可以在对话框关闭后执行此操作,也可以在关闭对话框之前使用挂钩执行此操作)。
我通过 (ab) 使用保存文件对话框找到了一个解决方法,该对话框不检查您是否对文件具有 read/write 权限:
CFileDialog dlg(false, nullptr, nullptr, OFN_FILEMUSTEXIST, nullptr, nullptr, 0, true)
可能需要更改对话框的标题,因为应用程序不会将任何内容保存到所选文件:
dlg.m_ofn.lpstrTitle = "Select file";
我正在使用 MFC 的 CFileDialog select 文件。我只对完整的文件路径感兴趣,因为我的应用程序不会直接打开它。虽然文件对话框通过声明拒绝 selecting 文件:"You don't have read permission to open this file"。 (正确 -- 我没有读取权限;我不想打开该文件。)
那么,在Windows下有没有办法使用文件对话框来获取路径?
这是我的代码:
CFileDialog dlg(true, nullptr, nullptr, OFN_FILEMUSTEXIST, nullptr, nullptr, 0, true);
dlg.DoModal();
文件打开对话框通过尝试打开文件实现 OFN_FILEMUSTEXIST
。
如果您没有打开文件的读取权限,这将失败。
解决方案是不使用 OFN_FILEMUSTEXIST
标志,并在需要时执行您自己的检查(您可以在对话框关闭后执行此操作,也可以在关闭对话框之前使用挂钩执行此操作)。
我通过 (ab) 使用保存文件对话框找到了一个解决方法,该对话框不检查您是否对文件具有 read/write 权限:
CFileDialog dlg(false, nullptr, nullptr, OFN_FILEMUSTEXIST, nullptr, nullptr, 0, true)
可能需要更改对话框的标题,因为应用程序不会将任何内容保存到所选文件:
dlg.m_ofn.lpstrTitle = "Select file";