2012-08-31 114 views
1

我使用ShellExecute(NULL, L"open", szSomeDirectory, 0, 0, SW_SHOWDEFAULT)在資源管理器中打開目錄。ShellExecute獲取訪問權限打開文件夾

我試圖打開一個目錄,我通常會提示You currently do not have permission to access this folder.,並會給我選項以獲取訪問權限並顯示UAC提示。

當我執行ShellExecute時,資源管理器給我一條錯誤消息,說Access Denied

我的程序使用管理員權限運行,但似乎並不重要。

如何獲得打開此文件夾的權限?

+0

嘗試右鍵單擊程序'.exe'並選擇'以管理員身份運行'。根據您的操作系統,即使您以管理員身份登錄,它也必然意味着您開始使用提升的權限運行的所有進程。 – hmjd

+0

我試過了。我想因爲''open''動詞只是告訴資源管理器導航到目錄。資源管理器給我的訪問被拒絕的消息。 – Josh

+0

您可能需要運行資源管理器提升。這應該做到這一點:'ShellExecute(NULL,L「runas」,L「explorer」,szSomeDirectory,0,SW_SHOWDEFAULT)' –

回答

1

想通了。

我的用戶帳戶無權訪問該文件。

我的解決辦法是使用AccessCheckShellExecute前,看看我是否能訪問該文件,如果我不能,用SetNamedSecurityInfo添加一個ACE爲具有完全訪問權限登錄用戶帳戶。