【问题标题】:How to handle directories that you can't access如何处理您无法访问的目录
【发布时间】:2012-11-28 11:15:19
【问题描述】:

我有一个列出所有目录的 C++ 应用程序,即您的 HDD 树。 我什至可以进入这些目录看看里面有什么,但我有问题 当我想在计算机上打开另一个用户的目录时。我无权去那里,它应该像在 Windows XP/Vista/7 中那样声明;相反,我收到一个错误,我的应用程序终止。

我该如何处理这个问题,使用FILE_ATTRIBUTE_ 或其他东西,所以当用户点击他无法进入的目录时,我的应用程序不会崩溃?它应该只是告诉他访问被拒绝。

我的应用是在 VS 2010 中制作的。

【问题讨论】:

标签: c++ windows visual-studio-2010 directory


【解决方案1】:

您需要做的就是检查来自FindFirstFile(或您用来查看目录内部的任何函数)的返回值,并向用户发出警告而不是进一步处理。

崩溃可能来自函数失败后尝试使用结果缓冲区。当函数失败时,您不应查看结果缓冲区中的内容或将其传递给任何其他函数(如FindNextFile),而应假定它完全是垃圾。

【讨论】:

    【解决方案2】:

    预先检测用户无法进入的目录,并且不会将它们呈现给用户界面。

    【讨论】:

    • 除非你想得到大量的错误报告“它不显示我的目录”我不认为不显示它们是一个好主意。但是,将它们显示为灰色可能是个好主意,并在用户尝试打开目录时显示不允许进入目录的消息。
    • 根据 OP 对问题的描述,如果他们试图访问他们无权访问的文件夹,那么他们不应该首先显示不可访问的文件夹。
    • 奇怪,我的读法不同。当然,他不想显示这些目录里面的内容,但是“当用户点击他无法进入的目录时,我的应用程序不会崩溃?它应该只告诉他访问权限否认。”听起来不像是隐藏目录。
    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多