簡體   English   中英

當我以管理員身份運行可執行文件時,為什么會調用我的 windows shell 擴展?

[英]Why is my windows shell extension being invoked when I run an executable as administrator?

我正在開發一個與 Windows 10 文件瀏覽器集成的項目,以允許用戶在我們的程序中打開選定的文件。 我制作的 shell 擴展大部分工作正常,但我遇到的問題是我的擴展的 IShellExtInit::Initialize(...) 和 IContextMenu::InvokeCommand(...) 在我右鍵單擊可執行文件在我的開始菜單結果中,然后單擊“以管理員身份運行”。 據我所知,我的代碼中唯一可以確認我的擴展在被調用時實際上應該運行的點是在DllGetClassObject(...)中,通過檢查 rclsid 和我的擴展的 GUID 是否相等。

對於 shell 分機的基本設置,我遵循了這個視頻系列 視頻中的示例擴展只出現在文本文件中,但我將其更改為適用於所有文件類型。

有誰知道這個問題可能來自哪里? 以下是我的代碼的相關部分: https://gist.github.com/caevrobe/2865b5f472d668352a7a91fb5c66953a

我在這里找到了這個問題的解決方案。 如果 pici->lpVerb:= NULL 在我的 IContextMenu:.InvokeCommand(...) 中,我的修復是返回 E_INVALIDARG。 當調用“以管理員身份運行”時,pici->lpVerb 是“runas”,當通過上下文菜單正常使用我的擴展程序時。 它是空的。

HRESULT MyContextMenuHandler::InvokeCommand(LPCMINVOKECOMMANDINFO pici) {
    if (pici->lpVerb != NULL)
        return E_INVALIDARG;
    // rest of your code...
}

我會留下這個問題,以防其他人遇到同樣的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM