Board logo

标题: [技术讨论] 有趣的getobject [打印本页]

作者: jyswjjgdwtdtj    时间: 2024-9-21 15:30     标题: 有趣的getobject

本帖最后由 jyswjjgdwtdtj 于 2024-9-21 15:32 编辑

关于wsh中的getobject函数 它不只只是wmi,与createobject相同的getobject("","wscript.shell")和获取已经开启的com 同时还有"script:","new:"等等script:可以在脚本中直接引用wsc文件作为对象 new:可以用clsid获得com的引用
但是看不到vbscript.dll的源代码 很让人苦恼啊 但是在.net的system.visualbasic.interaction类里有个一模一样的getobject() 经过我的测试 包括script,new都可以使用
大概长这个样子
  1.     public static object GetObject(string PathName = null, string Class = null)
  2.     {
  3.         if (Strings.Len(Class) == 0)
  4.         {
  5.             return Marshal.BindToMoniker(PathName);//似乎对应着script,new,wmi等
  6.         }
  7.         if (PathName == null)
  8.         {
  9.             return Marshal.GetActiveObject(Class);//获取已生成的com?不知道干嘛的
  10.         }
  11.         if (Strings.Len(PathName) == 0)
  12.         {
  13.             return Activator.CreateInstance(Type.GetTypeFromProgID(Class));//生成com
  14.         }
  15.         IPersistFile persistFile;//用pathname作为com生成的“参数”
  16.         persistFile = (IPersistFile)Marshal.GetActiveObject(Class);
  17.         persistFile.Load(PathName, 0);
  18.         return persistFile;
  19.     }
复制代码
但剩下的就是外部实现了……或许开源的.net core里会有




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2