注册表获取autoCAD安装位置

server/2024/9/20 3:52:34/ 标签: AutoCAD

注意事项

注意:①64位操作系统注册表会重定向,RegOpenKeyEx第4个参数得加上KEY_WOW64_64KEY;②RegOpenKeyEx遍历子项时注意第2和第4参数,参考图:

③RegQueryValueEx同样得注意第6参数

完整代码

std::unordered_map<std::string, std::string> GetAllAutoCADInstallPaths() 
{// 定义结果映射,键为版本号,值为安装路径std::unordered_map<std::string, std::string> installPaths;// 打开 AutoCAD 注册表项HKEY hKey;LONG lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Autodesk\\AutoCAD", 0, KEY_READ | KEY_WOW64_64KEY, &hKey);if (lResult != ERROR_SUCCESS) return installPaths;DWORD dwIndex = 0;TCHAR szSubKeyName[MAX_PATH];DWORD dwSize = sizeof(szSubKeyName);vector<string> vecSubKey;// 遍历子项while ((lResult = RegEnumKeyEx(hKey, dwIndex, szSubKeyName, &dwSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS) {vecSubKey.emplace_back(string("SOFTWARE\\Autodesk\\AutoCAD\\")+szSubKeyName);++dwIndex;dwSize = MAX_PATH;}vector<string> vecSubSubKey;for (auto &strKey : vecSubKey){HKEY hSubKey;LONG lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKey.c_str(), 0, KEY_READ | KEY_WOW64_64KEY, &hSubKey);if (lResult != ERROR_SUCCESS) return installPaths;dwIndex = 0;while ((lResult = RegEnumKeyEx(hSubKey, dwIndex, szSubKeyName, &dwSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS) {vecSubSubKey.emplace_back(strKey + "\\" + szSubKeyName);++dwIndex;dwSize = MAX_PATH;}// 关闭键RegCloseKey(hSubKey);}for(auto &strKey : vecSubSubKey){HKEY hSubKey;LONG lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strKey.c_str(), 0, KEY_READ| KEY_WOW64_64KEY, &hSubKey);if (lResult != ERROR_SUCCESS) return installPaths;char installPath[MAX_PATH];char name[MAX_PATH];DWORD size = MAX_PATH;if(RegQueryValueEx(hSubKey, "Location", NULL, NULL, reinterpret_cast<LPBYTE>(installPath), &size) == ERROR_SUCCESS) {size = MAX_PATH;RegQueryValueEx(hSubKey, "ProductName", NULL, NULL, reinterpret_cast<LPBYTE>(name), &size);installPaths[string(name)] = string(installPath);;}// 关闭键RegCloseKey(hSubKey);}// 关闭键RegCloseKey(hKey);return installPaths;
}

http://www.ppmy.cn/server/22433.html

相关文章

【FFmpeg】音视频录制 ④ ( 查询录制参数 )

文章目录 一、查询录制参数1、录制屏幕视频 系统音频命令回顾2、录制视频参数查询3、录制音频参数查询 一、查询录制参数 1、录制屏幕视频 系统音频命令回顾 在上一篇博客 【FFmpeg】音视频录制 ③ ( 使用 ffmpeg 录制 Screen Capturer Recorder 软件生成的虚拟音视频设备 | …

Git添加空文件夹

参考文章&#xff1a;https://blog.csdn.net/weixin_41287260/article/details/118057704 https://www.cnblogs.com/adam-ma/p/17982349 为空文件夹添加 .gitkeep 文件(推荐) 这个文件它本身是没有意义的&#xff0c;git好像也没有赋予它特殊使命&#xff0c;更像是团队使用者之…

asp.net结课作业中遇到的问题解决1

作业要求 实现增删改查导出基本功能。 1、如何设置使得某个背景就是一整个而不是无限填充或者是这个图片的某一部分。 这就要求在设置这一块的时候&#xff0c;长和宽按照背景图片的大小进行设置&#xff0c;比如&#xff1a; 如果&#xff0c;图片的大小不符合你的要求&am…

搭建git私人仓库

环境准备&#xff1a; 服务端&#xff1a;centos7 客户端&#xff1a;win11 1、安装git sudo apt-get install git2、创建git用户 adduser git修改密码 passwd git查看是否添加成功 cd /home && ls -al3、导入公钥 # 1.切换到git账号 su git# 2.进入 git账户的主…

CentOS 7 SSH 升级修复漏洞操作文档

CentOS 7 最新版&#xff08;CentOS 7.9 2009&#xff09; 默认 OpenSSH 版本为 7.4p1&#xff0c;OpenSSH 9.3p2 之前版本存在安全漏洞&#xff0c;需升级 OpenSSH 到安全版本避免漏洞。 本文将介绍 OpenSSH 升级到 9.7p1 版本&#xff0c;依赖的 OpenSSL 版本升级到 1.1.1 版…

模块四:前缀和——DP35 【模板】二维前缀和

文章目录 题目描述算法原理解法一&#xff1a;暴力模拟&#xff08;时间复杂度为O(n*m*q)&#xff09;解法二&#xff1a;二维前缀和&#xff08;时间复杂度为O(m*n)O(q)) 代码实现解法二&#xff1a;前缀和&#xff08;C)Java 题目描述 题目链接&#xff1a;DP35 【模板】二维…

Anaconda-用conda创建python虚拟环境常用命令

查看安装了哪些包 conda list查看当前存在哪些虚拟环境 conda env list conda info -e检查更新当前conda conda update condaPython创建虚拟环境 conda create -n your_env_name pythonx.xanaconda命令创建python版本为x.x&#xff0c;名字为your_env_name的虚拟环境。you…

Linux yum/环境变量/服务/进程/hash/bash/防火墙命令

常见的Yum命令命令作用yum repolist all列出所有仓库yum list all列出仓库中所有软件包yum info 软件包名称查看软件包信息yum install 软件包名称安装软件包yum reinstall 软件包名称重新安装软件包yum update 软件包名称升级软件包yum remove 软件包名称移除软件包yum clean …

C++之函数指针与动态内存分配

const int * p &i; //常指针 int * const p &i; //指针常量() 所有的单目运算符自右向左运算 *p; NULL nullptr (c11)空指针&#xff0c;修改了NULL与int之间的关系 返回值为指针的函数不能返回局部变量的地址 局部变量的生存期结束&#xff0c;地…

Git | Git基本命令

Git | Git基本操作 文章目录 Git | Git基本操作一、创建Git本地仓库1、创建Git仓库2、配置Git3、理解工作区、暂存区、版本库关系 二、添加、修改与查看添加文件查看历史提交记录 修改文件查看.git文件 三、版本回退版本回退撤销修改尚未add已add但还未commit已add并commit 删除…

如何基于Zookeeper实现注册中心模型?

在分布式系统中&#xff0c;通常会存在几十个甚至上百个服务&#xff0c;开发人员可能甚至都无法明确系统中到底有哪些服务正在运行。另一方面&#xff0c;我们很难同时确保所有服务都不出现问题&#xff0c;也很难保证当前的服务部署方式不做调整和优化。由于自动扩容、服务重…

C#基础之选择排序

选择排序 文章目录 选择排序1、概念2、代码实现 1、概念 1、新建一个下标 int index 0; 2、依次比较 3、找出极值 arr[index] < arr[n] 4、放入目标 //数组长度-1-n轮从第0轮开始 5、比较n轮2、代码实现 int[] arr new int[]{8,7,1,5,4,2,6,3,9}; 第一步 声明索引0&…

AI图书推荐:ChatGPT写论文的流程与策略

论文一直是任何学术学位的顶峰。它展示了学生在研究领域的兴趣和专业知识。撰写论文也是一个学习经验&#xff0c;为学术工作以及专业研究角色做好准备。但是&#xff0c;论文工作总是艰苦的&#xff0c;通常是充满乐趣和创造性的&#xff0c;但有时也是乏味和无聊的。生成式人…

django之select_related、prefetch_related

django中的ORM查询,针对复杂的查询,处理使用A.objects.filter(foreign_name__field)进行查询外。还可以使用select_related 和prefetch_related,进行性能的优化 select_related: 将会根据外键关系(注意: 仅限单对单和单对多关系),在执行查询语句的时候通过创建一条包含…

Web UI自动化测试--selenium其他使用方法

一、无头浏览器 应用场景: 无头的场景,一般先有头测试,再无头运行节省资源不关注正常的操作过程对错误的仍然可以截图示例: from selenium import webdrivermy_option =webdriver.ChromeOptions() my_option.add argument(-headless) driver= webdriverChrome(options=my…

Git 使用 下载分支 提交新项目到当前分支 三(公司快速上手版)

文章背景 git已经装好了&#xff0c;公司的也给创建好账户了&#xff0c;仓库地址也有了。 领导已经给你说了是哪个分支了。 如何下载远程仓库中的一个项目分支&#xff0c;到本地电脑上。 并且如何将新建的项目上传到当前分支的远程仓库 下载 步骤 创建文件夹。 右键 Op…

Django项目之图书管理系统

Django——图书管理系统 一、前期准备 1、创建好 Django 项目 2、准备好数据库 —— 创建数据库&#xff1a;book_system 3、配置项目中的数据库引擎 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: book_system,HOST: 127.0.0.1,USER: root,PASSWORD: ro…

mysql全量备份及数据恢复实践

前置 myql&#xff1a;8.0.34 percona-xtrabackup&#xff1a;percona-xtrabackup-8.0.34-29 一、全量备份脚本 #!/bin/bash #删除历史 find /data/backups -mtime 10 -exec rm -rf {} \; #下载备份工具 #wget https://file.zjwlyy.cn/percona-xtrabackup-8.0.34-22.tar…

Ubuntu下vscode彻底卸载

参考步骤&#xff1a;大佬博客 1、 执行以下命令卸载 Visual Studio Code&#xff1a; sudo apt purge code2、删除 Visual Studio Code 的配置文件和缓存文件。这些文件通常位于用户的主目录下的 .config 和 .cache 目录中。你可以使用以下命令删除它们&#xff1a; rm -rf …

Gateway

序言 本文给大家介绍一下 Spring Cloud Gateway 的基础概念以及使用方式。 一、快速入门 1.1 引入依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…