CAD二次开发,安装程序中写注册表

一、加载dll时写注册表

我们知道,dll加载到cad中后使用

HostApplicationServices.Current.RegistryProductRootKey()

就可以拿到当前cad的注册表,那么如果想在安装程序时写,此时并没有cad的环境,要怎么办呢?

二、获取所有已安装的cad的注册表路径

cad在安装后,会在注册表的计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Hardcopy目录下存放所有已安装的cad的注册表位置

CAD二次开发,安装程序中写注册表

如图,由于我只安装了一个,所以这里只显示一个,我们使用代码即可获取到所有的valueName值

public static List<string> GetHardcopyList()
    {
        List<string> list = new List<string>();
        var key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Autodesk\Hardcopy");
        if (key != null)
        {
            string[] subKeyNames = key.GetValueNames();
            subKeyNames.Count().Prompt();
            foreach (string name in subKeyNames)
            {
                list.Add(name);
            }
        }
        return list;
    }

 

拿到valueName值后,我们可以用如下方法写上注册表

public static void WriteZcb()
    {
        var names=GetHardcopyList();
        var dllFile = "D:\\123.dll";
        foreach (var name in names)
        {
            var address = "SOFTWARE\\" + name + "\\Applications";
            RegisteringCAD(address, dllFile);
        }
    }
    /// <summary>
    /// 注册dll
    /// </summary>
    /// <param name="dllFile">dll文件路径</param>
    /// <returns></returns>
    public static bool RegisteringCAD(string address,string dllFile)
    {
        RegistryKey user = Registry.CurrentUser.OpenSubKey(address, true);
        if (user == null)
        {
            return false;
        }
        RegistryKey keyUserApp = user.CreateSubKey(Path.GetFileNameWithoutExtension(dllFile));
        keyUserApp.SetValue("DESCRIPTION", Path.GetFileNameWithoutExtension(dllFile), RegistryValueKind.String);
        keyUserApp.SetValue("LOADCTRLS", 2, RegistryValueKind.DWord);
        keyUserApp.SetValue("LOADER", dllFile, RegistryValueKind.String);
        keyUserApp.SetValue("MANAGED", 1, RegistryValueKind.DWord);

        return true;
    }

 其中 dllFile为要写入的dll路径

原文链接:https://www.cnblogs.com/d1742647821/p/17306914.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CAD二次开发,安装程序中写注册表 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • C# 通过同步和异步实现优化做早餐的时间

    C# 通过同步和异步实现优化做早餐的时间攻略 在进行优化做早餐时间的过程中,可以使用同步和异步的方式来实现,从而提高效率。下面是其中两种实现方式: 同步实现 同步实现是顺序执行代码,并且在上一个任务执行完毕后才能开始执行下一个任务的方式。对于做早餐的过程来说,就是必须一个一个步骤地完成才能继续下一步。 public void MakeBreakfastSyn…

    C# 2023年5月15日
    00
  • C#实现String类型和json之间的相互转换功能示例

    C#实现String类型和JSON之间的相互转换功能示例 1. 前言 在现代Web开发中,常常需要将服务器数据以JSON(JavaScript Object Notation)格式传输到客户端,或者将客户端数据以JSON格式上传到服务器。同时,C#作为一门强类型的编程语言,当我们需要将JSON格式的字符串转换为C#的String类型或者反之,就需要使用到相互…

    C# 2023年5月31日
    00
  • C# .net实现货币转换示例

    以下是” C# .net实现货币转换示例”的完整攻略。我们可以按照以下步骤进行: 创建一个C# .net项目 首先,在Visual Studio中创建一个C# .net项目。可以创建一个控制台应用程序或Windows窗体应用程序,具体看你需要使用哪种界面来展示货币转换结果。 导入外部货币汇率数据 为了实现货币转换,我们需要导入外部货币汇率数据。可以使用一些开…

    C# 2023年6月7日
    00
  • 如何在ASP.Net Core使用分布式缓存的实现

    如何在ASP.Net Core使用分布式缓存的实现攻略 在本攻略中,我们将详细讲解如何在ASP.Net Core应用程序中使用分布式缓存,并提供两个示例说明。 步骤一:安装NuGet包 在ASP.Net Core应用程序中使用分布式缓存,您需要安装Microsoft.Extensions.Caching.StackExchangeRedis NuGet包。您…

    C# 2023年5月17日
    00
  • Asp Split函数之使用多个分割符的方法

    接下来我会详细讲解 “Asp Split函数之使用多个分割符的方法” 的完整攻略。 什么是Split函数? Split函数是VBScript的内置函数,用于将一个字符串按照指定的分隔符分割成一个数组。在ASP中使用时,可以用来处理表单数据、URL参数等字符串。 Split函数的语法 Split(Expression, [Delimiter, [Limit, …

    C# 2023年6月7日
    00
  • ASP.NET Core 过滤器中使用依赖注入知识点总结

    ASP.NET Core 过滤器中使用依赖注入知识点总结 ASP.NET Core是一个跨平台的Web应用程序框架,它可以帮助我们构建高性能的Web应用程序。过滤器是ASP.NET Core中的一个重要概念,它可以帮助我们在请求管道中添加逻辑。本攻略将详细介绍如何在ASP.NET Core过滤器中使用依赖注入。 环境要求 在进行ASP.NET Core过滤器…

    C# 2023年5月17日
    00
  • asp.net中XML如何做增删改查操作

    ASP.NET提供了多种操作XML的方式,例如使用Linq to XML、XmlDocument等。下面分别介绍在ASP.NET中如何利用Linq to XML和XmlDocument进行XML的增删改查操作。 使用Linq to XML操作XML 1. 增加节点 可以通过添加元素来添加一个节点。示例代码如下: XDocument xdoc = XDocum…

    C# 2023年6月6日
    00
  • c#检测文本文件编码的方法

    C#中检测文本文件编码的方法主要有以下几种: 1. 使用System.Text.Encoding的GetEncoding方法 使用System.Text.Encoding的GetEncoding方法可以检测文本文件的编码类型。该方法会返回一个Encoding类型的对象,用来表示文件的编码。 以下是一个示例代码: using System.IO; using …

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部