C++ ShellExecute获取打开文件夹的访问权限

C++ ShellExecute获取打开文件夹的访问权限,c++,windows,winapi,shellexecute,C++,Windows,Winapi,Shellexecute,我正在使用ShellExecute(NULL,L“open”,szSomeDirectory,0,0,SW_SHOWDEFAULT)在资源管理器中打开一个目录 我正在尝试打开一个目录,通常会提示我使用您当前没有访问此文件夹的权限。并且会给我获取访问权限的选项并显示UAC提示 当我执行ShellExecute时,资源管理器会给我一条错误消息,说访问被拒绝 我的程序以管理员权限运行,但这似乎无关紧要 如何获得打开此文件夹的权限?您可以在链接器清单中为您的程序设置UAC级别 看看这个:您可以在程序的链

我正在使用
ShellExecute(NULL,L“open”,szSomeDirectory,0,0,SW_SHOWDEFAULT)
在资源管理器中打开一个目录

我正在尝试打开一个目录,通常会提示我使用
您当前没有访问此文件夹的权限。
并且会给我获取访问权限的选项并显示UAC提示

当我执行ShellExecute时,资源管理器会给我一条错误消息,说
访问被拒绝

我的程序以管理员权限运行,但这似乎无关紧要


如何获得打开此文件夹的权限?

您可以在链接器清单中为您的程序设置UAC级别


看看这个:

您可以在程序的链接器清单中设置UAC级别

看看这个:

找到了答案

我的用户帐户没有访问该文件的权限

我的解决方案是在
ShellExecute
之前使用
AccessCheck
查看我是否可以访问该文件,如果无法访问,则使用
SetNamedSecurityInfo
为具有完全访问权限的登录用户帐户添加ACE。

解决了这个问题

我的用户帐户没有访问该文件的权限


我的解决方案是在
ShellExecute
之前使用
AccessCheck
查看我是否可以访问该文件,如果无法访问,则使用
SetNamedSecurityInfo
为具有完全访问权限的登录用户帐户添加ACE。

尝试右键单击程序
.exe
,然后选择
以管理员身份运行。根据您的操作系统,即使您是以管理员身份登录的,也必然意味着您启动的所有进程都以提升的权限运行。我已经尝试过了。我想是因为
“open”
动词只是告诉资源管理器导航到目录。资源管理器向我发送拒绝访问消息。您可能需要运行资源管理器。这应该可以做到:
ShellExecute(NULL,L“runas”,L“explorer”,szSomeDirectory,0,SW_SHOWDEFAULT)
很遗憾,这不起作用。也许这会有所帮助:`C:\Dir1\Dir2\Dir3`-Dir2默认情况下我无权访问。我正在尝试在程序中打开Dir3。请右键单击程序
.exe
,然后选择
以管理员身份运行。根据您的操作系统,即使您是以管理员身份登录的,也必然意味着您启动的所有进程都以提升的权限运行。我已经尝试过了。我想是因为
“open”
动词只是告诉资源管理器导航到目录。资源管理器向我发送拒绝访问消息。您可能需要运行资源管理器。这应该可以做到:
ShellExecute(NULL,L“runas”,L“explorer”,szSomeDirectory,0,SW_SHOWDEFAULT)
很遗憾,这不起作用。也许这会有所帮助:`C:\Dir1\Dir2\Dir3`-Dir2默认情况下我无权访问。我正试图在我的程序中打开Dir3。