返回列表 发帖
本帖最后由 jyswjjgdwtdtj 于 2025-3-22 15:25 编辑

回复 1# 小白龙
[void][Reflection.Assembly]::LoadWithPartialName("microsoft.visualbasic")      
$Objshell=[system.activator]::Createinstance([system.type]::GetTypeFromClsid("{944DE083-8FB8-45CF-BCB7-C477ACB2F897}"))  
write-host [microsoft.visualbasic.information]::typename($objshell)COPY
然而只能获取到类名 而非progid
你好

TOP

本帖最后由 jyswjjgdwtdtj 于 2025-3-22 15:49 编辑

回复 3# 小白龙


powershell获取的clsid不是com组件真的clsid
比如wshshell的clsid是72C24DD5-D70A-438B-8A42-98424B88AFB8 但powershell给出了41904400-be18-11d3-a28b-00104bd35090
更正一下 这样才能获取到progid
$s=@'
using System;
using System.Runtime.InteropServices;
namespace ns
{
    public class com
    {
        [DllImport("ole32.dll")]
        static extern int ProgIDFromCLSID([In] ref Guid clsid, [MarshalAs(UnmanagedType.LPWStr)] out string lplpszProgID);
        public static string Getprogid(string clsid)
        {
            string progId = "";
            Guid guid = new Guid(clsid);
            ProgIDFromCLSID(ref guid, out progId);
            return progId;
        }
    }
}
'@
add-type -typedefinition $s
[ns.com]::Getprogid("{72C24DD5-D70A-438B-8A42-98424B88AFB8}")COPY
你好

TOP

回复 5# 小白龙


   虽然不知道为什么报错了还是能输出结果 但确实能用不是吗
你好

TOP

返回列表