zoukankan      html  css  js  c++  java
  • COM相关操作(C#)

    在项目中一个关键的功能需要特别注册第三方的dll控件,以前的操作方式写一个bat处理文件,双击进行注册。问题来了,虽然双击可以注册,但是客户实在是不理解这个东西,为什么要双击这个文件啊?我怎么知道要点击这个文件?更要命的是系统是分布式的,一旦遇到问题,都要到给客户那里进行注册。几百号人,问一个回答一个,肯定不能这样操作,所以到网上研究通过C#代码后台进行注册,如果通过代码注册失败再写到中央服务器的日志系统中。那样只需要关注少量无法注册的用户了,而且在用户发现问题之前或许维护者已经知道了。下面是参照网络写成的,感谢大家的分享。

    • 检查dll是否已经注册

    检查是否已经注册的代码为:

       #region Is dll register
        public bool IsDllRegistered()
        {
          bool reg=true;
          RegistryKey rk=Registry.ClassesRoot.OpenSubKey("CLSID\{AC53EFE4-94A7-47E6-BBFC-E9B9CF322299}");
          if(rk==null)
          {
            MessageBox.Show("未注册");
            reg=false;
          }
          else
          {
            MessageBox.Show("已注册");
          }
          return reg;
        }
        #endregion

    其中GUID串{AC53EFE4-94A7-47E6-BBFC-E9B9CF322299}为注册dll的Class ID。此Class ID在不同的电脑上面注册和重复注册皆不变,开始时在注册表搜索了半天没有找到,可通过一个名叫RegDllView的小工具进行查找。

     

    • 注册dll控件
        #region Open dwg file
        [DllImport(@"../ja-JP/com/DwgViewX.dll")]
        private static extern int DllRegisterServer();
        private void OpenDwgFile(string savePath)
        {
          if(!IsDllRegistered())
          {
            int i = DllRegisterServer();
            if (i >= 0)
            {
              /*
               * Inoke special function to open dwg file
               * */          
            }
            else
            {
              /*
               * Register failed and open dwg with CAD
               * */
              System.Diagnostics.Process.Start(savePath);
            }
          }
        }
        #endregion

    其中@"../ja-JP/com/DwgViewX.dll"是你的dll存储的相对路径。注意需要引用名空间:

    using System.Runtime.InteropServices;
    using Microsoft.Win32;
  • 相关阅读:
    4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块
    3 Apr 18 内置函数 列表生成式与生成器表达式 模块的使用之import 模块的使用之from…import…
    2 Apr 18 三元表达式 函数递归 匿名函数 内置函数
    30 Mar 18 迭代器 生成器 面向过程的编程
    29 Mar 18 函数 有参、无参装饰器
    28 Mar 18 函数
    27 Mar 18 函数的参数
    26 Mar 18 函数介绍
    23 Mar 18 文件处理
    22 Mar 18 补充数据类型+字符编码+文件处理
  • 原文地址:https://www.cnblogs.com/jiangxiaoqiang/p/4278698.html
Copyright © 2011-2022 走看看