Windows 是否可以按名称空间和类名列出COM对象?

Windows 是否可以按名称空间和类名列出COM对象?,windows,com,batch-file,Windows,Com,Batch File,从批处理文件中,在用户安装某些东西之前,我需要验证他是否没有使用给定的命名空间和类名注册其他CLSID。这可能吗?我的理解是这是ProgID。我知道ProgID不是必需的,对于某些COM对象可能会丢失,但是如果它存在,我想检查它 我可以通过regedit直观地执行此操作,但这显然不符合我的目的。这将使用ProgID键在所有CLSID中循环,并检查它们是否与指定的字符串匹配 @echo off setlocal EnableDelayedExpansion set "xLast=" for /F

从批处理文件中,在用户安装某些东西之前,我需要验证他是否没有使用给定的命名空间和类名注册其他CLSID。这可能吗?我的理解是这是ProgID。我知道ProgID不是必需的,对于某些COM对象可能会丢失,但是如果它存在,我想检查它


我可以通过regedit直观地执行此操作,但这显然不符合我的目的。

这将使用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

这将使用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

无论您可以通过regedit可视化地执行什么操作,都应该能够使用'reg'命令完成,只需使用'reg query'读取progID(如果存在),然后查询progID。我会发布更多详细信息,但不幸的是,我手头没有windows系统。无论您可以通过regedit可视化地执行什么操作,都可以使用“reg”命令完成,只需使用“reg query”读取progID(如果存在),然后查询progID。我会发布更多细节,但不幸的是,我手头没有windows系统。