防止Windows'从检查读取权限打开文件对话框

时间:2015-07-22 07:02:31

标签: winapi mfc openfiledialog

我使用MFC的CFileDialog来选择文件。我只对完整的文件路径感兴趣,因为我的应用程序不会直接打开它。虽然文件对话框拒绝通过声明选择文件:"您没有读取权限来打开此文件"。 (这是正确的 - 我没有读取权限;我不想打开该文件。)

那么,Windows下是否有办法通过文件对话框进入路径?

这是我的代码:

CFileDialog dlg(true, nullptr, nullptr, OFN_FILEMUSTEXIST, nullptr, nullptr, 0, true);
dlg.DoModal();

2 个答案:

答案 0 :(得分:1)

我找到了(ab)使用保存文件对话框的解决方法,该对话框不会检查您是否对文件具有读/写权限:

CFileDialog dlg(false, nullptr, nullptr, OFN_FILEMUSTEXIST, nullptr, nullptr, 0, true)

有人可能想要更改对话框的标题,因为应用程序不会将任何内容保存到所选文件中:

dlg.m_ofn.lpstrTitle = "Select file";

答案 1 :(得分:0)

文件打开对话框通过尝试打开文件来实现OFN_FILEMUSTEXIST

如果您没有读取打开文件的权限,则会失败。

解决方案是不使用OFN_FILEMUSTEXIST标志,并在需要时执行您自己的检查(您可以在对话框关闭后或在使用挂钩关闭之前执行此操作)。