0

这个问题之后,我想列出一个Component Object Model (COM)对象公开的所有方法和属性,给定它的ProgID. 从这里我可以列出注册表中所有可用的 COM 对象 ProgID:

dir  REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue(“”)}

尽管它.1在某些导出字符串的末尾添加了一些数字(例如,)。

这里提出了一个小脚本,可以在给定 CLSID 的情况下完成这项工作伪代码:

[activator]::CreateInstance([type]::GetTypeFromCLSID($CLSID)) | Get-Member

需要注意的是,我不知道 PowerShell,上面的 oneliner 很可能是错误的。

如果您能帮助我了解如何WScript.Shell使用上述代码片段或任何其他方式获取 COM 对象的方法和属性列表,我将不胜感激。

PS它不一定是 PowerShell 解决方案。cmd/batch、JScript 和 VBScript 解决方案也很受欢迎。

4

1 回答 1

1

如果您从 COM 对象实例化对象,则会公开公共方法和属性

New-Object -ComObject WScript.Shell | Get-Member

将返回

Name                     MemberType            Definition                                   
----                     ----------            ----------                                   
AppActivate              Method                bool AppActivate (Variant, Variant)          
CreateShortcut           Method                IDispatch CreateShortcut (string)            
Exec                     Method                IWshExec Exec (string)                       
ExpandEnvironmentStrings Method                string ExpandEnvironmentStrings (string)     
LogEvent                 Method                bool LogEvent (Variant, string, string)      
Popup                    Method                int Popup (string, Variant, Variant, Variant)
RegDelete                Method                void RegDelete (string)                      
RegRead                  Method                Variant RegRead (string)                     
RegWrite                 Method                void RegWrite (string, Variant, Variant)     
Run                      Method                int Run (string, Variant, Variant)           
SendKeys                 Method                void SendKeys (string, Variant)              
Environment              ParameterizedProperty IWshEnvironment Environment (Variant) {get}  
CurrentDirectory         Property              string CurrentDirectory () {get} {set}       
SpecialFolders           Property              IWshCollection SpecialFolders () {get}

@Simon Mourrier 策略也可以正常工作

于 2020-11-26T11:15:58.877 回答