我有一个同时使用SHBrowseForFolder,GetSaveFileName的程序。

当我使用GetSaveFileName并且所选目录没有正确的权限时,它会自动显示错误,表明当前用户没有适当的权限。

使用SHBrowseForFolder时,我需要进行与此类似的检查。

尝试过CreateDirectory,但如果选择的目录为C :,它将成功执行,而GetSaveFileName仅允许管理员在此处写入。

最佳答案

您可以使用以下方法检查权限:


GetProcessToken
GetTokenInformation(获取令牌用户和用户的SID)
GetNamedSecurityInfo(获取给定文件夹的DACL)和
BuildTrusteeWithSid(pTrustee,pSidUser);
GetEffectiveRightsFromAcl


有关更多详细信息,请参见Check User’s Permissions On A File or Folder文章。

09-27 04:43