给定一个外部.dll,如何获取一个它的guid或者uuid、clsid(附:另外两个帖子来人回复送分)

m0_37748860 2017-11-28 03:15:11
如题,不是自己写的dll,怎么获取它的guid或者uuid、clsid

有一个办法部分可行贴出来吧,如下,但是loadfrom方法失败:没有注册。。。请问有其他方法吗?
Assembly ass = Assembly.LoadFrom(@"D:\doc\oscartools\driver\DotNetProvider\V2.0\src\bin\Release\System.Data.OscarClient.dll");
GuidAttribute[] grids = (GuidAttribute[])ass.GetCustomAttributes(typeof(GuidAttribute), false);
if (grids.Length > 0)
{
Guid gudi = new Guid(grids[0].Value);
System.Console.WriteLine(gudi);
Console.ReadLine();
}
...全文
352 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37748860 2017-11-29
  • 打赏
  • 举报
回复
引用 2 楼 qq_32661557 的回复:
获取guid有啥用
dll注册引用失败,[DllImport]找不到入口点,无奈只能通过guid获取type创建实例调用方法。
本人QQ-554433626 2017-11-29
  • 打赏
  • 举报
回复
获取guid有啥用
m0_37748860 2017-11-29
  • 打赏
  • 举报
回复
问题解决了。
 public   class CustomDLLInvoke  
         {  
         [DllImport("kernel32.dll")]
            public extern static IntPtr LoadLibrary(string path);  
         [DllImport("kernel32.dll")]
         public extern static IntPtr GetProcAddress(IntPtr lib, String funcName);  
         [DllImport("Kernel32.dll")]
         public extern static bool FreeLibrary(IntPtr lib);
         public IntPtr MLib;  
         public CustomDLLInvoke(string dllPath)
         { MLib = LoadLibrary(dllPath); }  
         public CustomDLLInvoke(){FreeLibrary(MLib);}  
         public Delegate Invoke(string APIName,Type t)
         { IntPtr api = GetProcAddress(MLib, APIName); return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t); }


       
         }  
 IntPtr inp = CustomDLLInvoke.LoadLibrary(@"C:\Users\Desktop\杨的文档\7150_pre\SoundDesignerSDK\bin\SDCOM.dll");
                   
                    var runtype = Type.GetTypeHandle(inp);
                    Type testtype = Type.GetTypeFromHandle(runtype);
                    var guid=testtype.GUID.ToString();

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧