使用软件检测电脑设置对应的注册表位置

目录
通过命令行指令完成win10系统设置
测试环境
实现原理
测试
通过命令行指令完成win10系统设置
问题描述:我们会在windows的系统设置里修改一些设置项,方便自己的使用。我们可以通过鼠标,点点点,就可以随心所欲的配置成自己符合自己使用习惯的系统。但有时在项目上,我们需要通过程序后台做到这一点,就不是一件简单事了。当然啦,我们今天就是要解决这件事的。

测试环境
测试系统:windows 10
测试软件:progressmonitor(进程监控软件,可以监测注册表的变动)

实现原理
由于系统设置项都是会写进注册表内的,所以我们可以通过监测设置时注册表的变化,然后再通过命令行手动控制该值变化,即可达到同样的效果。
我使用的软件是 progress monitor。
注:另外提一句,本来注册表监控软件应该是registry monitor 的。但是我能搜到的注册表监控软件都不适用windows10系统,所以选择的是这款进程监控软件。

测试
下面我用windows10上的投屏功能做个演示,如果您会这类软件的使用可以直接去用的,直接忽略就好了。

目的:使用该软件进行查看自己的操作改变了系统里哪些值。
要点1:要知道你自己是在哪个进程下进行的操作。
要点2:你想监视的操作是什么。

准备工作:打开监控软件,打开“设置-系统-投影到此电脑”页面。

打开 ”文件 – 捕获事件”
在这里插入图片描述

打开“过滤器 – 过滤器
在这里插入图片描述

添加过滤器
选择“进程名称”为“SystemSettings.exe”,点击添加。
选择“操作”是“RegSetValue”,点击添加。
点击“确定”
在这里插入图片描述

在设置中,可以看到自己当前的设置,我这里第一项是“始终关闭”的。将第一项设置为“所有位置都可用”。在监控软件中,可以看到多了两条记录。双击每个事件可查看其修改的内容。其中,路径和数据是我们需要注意的。
在这里插入图片描述
在这里插入图片描述

下面我们亲自动手试试。通过再次切换为“始终关闭”,发现变化的只有AutoEnabled项,开是1,关是0。所以我们进入注册表,手动改一下这个值。
windows + R,输入regedit,回车。
进入路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PlayToReceiver ,右击AutoEnabled,点击修改该值为0.确定后,切换设置页面进行刷新,(切换项目就可以刷新)可以看到投影到此电脑页面中第一项变为了“始终关闭”。即可验证,我们通过修改注册表是可以直接修改设置项的。
在这里插入图片描述

最后,我们通过命令行再试试。
打开命令提示符(管理员),windows10系统下,可以是右击“开始菜单”,选择“windows powershell(管理员)”,输入

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PlayToReceiver" /v AutoEnabled /d 1 /t REG_DWORD /f

在这里插入图片描述

再刷新投影到此电脑页面,可以看到第一项又变回了“所有位置都可用”。
测试完毕。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt中,可以使用QSettings类来读取和写入注册表。但是,修改注册表需要管理员权限。要获取管理员权限,可以使用Windows API的ShellExecute函数。 以下是一个示例代码,可以在Qt中获取管理员权限并修改注册表: ```cpp #include <QCoreApplication> #include <Windows.h> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 获取管理员权限 SHELLEXECUTEINFO shexinfo = {0}; shexinfo.cbSize = sizeof(SHELLEXECUTEINFO); shexinfo.fMask = SEE_MASK_NOCLOSEPROCESS; shexinfo.lpVerb = L"runas"; shexinfo.lpFile = L"cmd.exe"; shexinfo.nShow = SW_HIDE; if (!ShellExecuteEx(&shexinfo)) { qDebug() << "Failed to get admin privileges!"; return a.exec(); } // 等待管理员权限获取完成 WaitForSingleObject(shexinfo.hProcess, INFINITE); // 写入注册表 HKEY hKey; QString keyPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"; QString appName = "MyApp"; QString appPath = "C:\\MyApp\\MyApp.exe"; LONG result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyPath.toStdWString().c_str(), 0, KEY_WRITE, &hKey); if (result != ERROR_SUCCESS) { qDebug() << "Failed to open registry key!"; return a.exec(); } result = RegSetValueEx(hKey, appName.toStdWString().c_str(), 0, REG_SZ, (LPBYTE)appPath.toStdWString().c_str(), (DWORD)(appPath.length() + 1) * sizeof(wchar_t)); if (result != ERROR_SUCCESS) { qDebug() << "Failed to write registry value!"; RegCloseKey(hKey); return a.exec(); } RegCloseKey(hKey); qDebug() << "Registry key updated successfully!"; return a.exec(); } ``` 在上面的代码中,我使用了Windows API的ShellExecute函数来获取管理员权限。然后,我打开了注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",并将我的应用程序路径写入到注册表中。最后,我关闭了注册表项句柄和进程句柄。 请注意,修改注册表是危险的操作,需要谨慎处理。在实际应用中,您应该根据您的具体需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值