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。