2013-01-07 28 views
1

從批處理文件中,在用戶安裝某些東西之前,我需要驗證他沒有註冊具有給定名稱空間和類名的其他CLSID。這可能嗎 ?我的理解是,這是ProgID。我知道ProgID不是必需的,可能會缺少某些COM對象,但是它存在的位置,我想檢查它。是否可以按名稱空間和類名列出COM對象?

我可以通過註冊表直觀地做到這一點,但這顯然不符合我的目的。

+0

任何你可以通過註冊表編輯器直觀地做應該可以用「章」命令acomplish,只是「REG查詢」一則查詢PROGID讀取進程id(如果存在)。我會發布更多的細節,但不幸的是我沒有一個Windows系統手頭atm。 – weberik

回答

1

這將使用ProgID鍵遍歷所有CLSID並檢查它們是否與指定的字符串匹配。

@echo off 
setlocal EnableDelayedExpansion 

set "xLast=" 
for /F "tokens=1,2,*" %%A in ('reg query HKCR\CLSID /s /f ProgID /k /e /ve') do (
    rem echo(%%C 
    if "%%~C" EQU "Enter ProgID to match on here" echo Found Match: !xLast! 
    set "xLast=%%A %%B %%C" 
) 

endlocal 
pause 
相關問題