如何在不查詢註冊表的情況下檢索「CLSID_SeparateMultipleProcessExplorerHost」? 是否有任何Win32 API將「CLSID_SeparateMultipleProcessExplorerHost」作爲參數,並給我它的GUID。如何檢索「CLSID_SeparateMultipleProcessExplorerHost」
感謝 Santhi
如何在不查詢註冊表的情況下檢索「CLSID_SeparateMultipleProcessExplorerHost」? 是否有任何Win32 API將「CLSID_SeparateMultipleProcessExplorerHost」作爲參數,並給我它的GUID。如何檢索「CLSID_SeparateMultipleProcessExplorerHost」
感謝 Santhi
字符串"CLSID_SeparateMultipleProcessExplorerHost"
不存在註冊表,或其他任何地方。它嚴格是在Win32 SDK中定義的僅用於源代碼的編譯時常量值{75DFF2B7-6936-4C06-A8BB-676A7B00B24B}
的名稱。在編譯期間,該名稱被剝離出來。
通常,如果您在運行時將CLSID值傳遞給ProgIDFromCLSID()
,您將獲得CLSID的關聯ProgID名稱,該名稱可以在運行時傳遞給CLSIDFromProgID()
以檢索CLSID。但是,這個特定的CLSID沒有關聯的ProgID,所以這不是一個選項。
你當然一般都是正確的,但有趣的事情/例外在於這個特定的字符串確實存在,作爲COM類的描述對於這個COM類:)也許這是海報混淆的根本原因在這裏... –
在這種情況下,唯一的選擇是手動枚舉HKCR \ CLSID註冊表鍵檢查每個子鍵的描述。沒有API函數從描述字符串中檢索CLSID –
感謝您的回答,這有助於我更好地理解,我的要求是檢索除註冊表以外的「{ceff45ee-c862-41de-aee2-a022c81eda92}」值。比較Explorer.exe參數,因爲我不想對它進行硬編碼,我在尋找,如果有辦法檢索值? – santhiR
字符串到CLSID或...究竟是什麼?如果你願意,你可以對它進行硬編碼。 –
它始終是'{75DFF2B7-6936-4C06-A8BB-676A7B00B24B}'。 CLSID被設計爲不變。 –
不完全是,當底層COM聲明發生變化時,guid *會做出更改。這就是爲什麼它是一個符號而不是字面的指導。註冊表知道關於符號或未安裝的舊版本的bean,它只知道guid。 CLSID註冊表項的默認值恰好與該符號具有相同的名稱是一種意外。利用這個事故是可能的,但*非常*昂貴,你將不得不遍歷所有的CLSID密鑰。有很多。 RegEnumKeyEx()之外沒有winapi函數。硬編碼是實用的解決方案。 –