鱼C论坛

 找回密码
 立即注册
查看: 1841|回复: 7

[已解决]如何操作注册表,写入程序?

[复制链接]
发表于 2023-7-26 17:33:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,我操作注册表内的的软件信息(安装的应用),路径是什么?
chatgpt 回答论坛问题应当制止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-26 17:34:19 | 显示全部楼层
要在 Python 中操作注册表并写入程序,你可以使用  winreg  模块(Python 3.x)或者  _winreg  模块(Python 2.x)。这些模块提供了方法来读取、写入和修改 Windows 注册表中的键和值。

下面是一个示例,演示如何使用  winreg  模块来读取和写入注册表中的软件信息:
import winreg# 定义注册表的根键路径SOFTWARE_KEY = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"def read_installed_software():    # 打开 SOFTWARE_KEY    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, SOFTWARE_KEY, 0, winreg.KEY_READ)    # 遍历所有子键,获取安装的软件信息    num_subkeys = winreg.QueryInfoKey(key)[0]    for i in range(num_subkeys):        subkey_name = winreg.EnumKey(key, i)        subkey = winreg.OpenKey(key, subkey_name)        software_name = winreg.QueryValueEx(subkey, "DisplayName")[0]        software_version = winreg.QueryValueEx(subkey, "DisplayVersion")[0]        print("软件名称:", software_name)        print("版本号:", software_version)        print("------------------")    # 关闭注册表键    winreg.CloseKey(key)def write_to_registry():    # 打开 SOFTWARE_KEY    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, SOFTWARE_KEY, 0, winreg.KEY_ALL_ACCESS)    # 创建新的子键    new_key = winreg.CreateKey(key, "NewSoftware")        # 设置子键的值    winreg.SetValueEx(new_key, "DisplayName", 0, winreg.REG_SZ, "New Software")    winreg.SetValueEx(new_key, "DisplayVersion", 0, winreg.REG_SZ, "1.0")    # 关闭注册表键    winreg.CloseKey(new_key)    winreg.CloseKey(key)# 读取已安装的软件信息read_installed_software()# 写入注册表示例write_to_registry()
在上述示例中, read_installed_software  函数用于读取已安装的软件信息,它打开  SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall  路径下的注册表键,并遍历所有子键,获取软件名称和版本号。

write_to_registry  函数用于示例目的创建一个新的子键,并设置其值为 "New Software" 和 "1.0"。

请注意,操作注册表需要管理员权限,因此在运行脚本时,确保以管理员身份运行。

希望这对你有所帮助!如果你有其他问题,请随时提问。求给个最佳答案,非常感谢
只要点击我的回复贴写着发表时间的那一栏的绿色按钮即可!-->

                               
登录/注册后可看大图


此回答源于ChatGPT,若有不正确之处,请多包容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-7-26 17:34:26 | 显示全部楼层
在 Python 中,你可以使用 winreg(Windows Registry)模块来操作 Windows 注册表。该模块提供了一组函数和常量,用于读取、写入和删除注册表键和值。

为了操作注册表的软件信息,你需要知道软件信息存储的注册表路径。软件信息通常存储在以下两个注册表键中:

1. HKEY_CURRENT_USER:保存当前用户的配置信息。路径为 HKEY_CURRENT_USER\Software

2. HKEY_LOCAL_MACHINE:保存计算机的全局配置信息。路径为 HKEY_LOCAL_MACHINE\Software

下面是一个示例,演示如何使用 Python 操作注册表并读取软件信息:
import winregdef get_installed_software():    installed_software = []        # 打开 HKEY_CURRENT_USER\Software 键    current_user_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software")        try:        # 逐个遍历子键        for i in range(winreg.QueryInfoKey(current_user_key)[0]):            subkey_name = winreg.EnumKey(current_user_key, i)                        # 如果子键名称以 "Microsoft" 开头,则将其视为已安装的软件            if subkey_name.startswith("Microsoft"):                installed_software.append(subkey_name)        finally:        # 关闭注册表键        winreg.CloseKey(current_user_key)        return installed_software# 调用函数获取已安装的软件列表software_list = get_installed_software()# 打印已安装的软件信息for software in software_list:    print(software)
上述示例代码只是读取了当前用户的注册表中的软件信息,你可以根据需要修改路径和条件来获取更具体的软件信息。请注意,在操作注册表时要小心,确保仅对你有权限的注册表键进行操作,并备份重要的注册表项以防止意外。

希望这能帮到你!如果你有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-26 17:34:58 | 显示全部楼层
标题:如何操作注册表,写入程序?

内容:

要操作注册表中的软件信息(已安装的应用),你需要知道的路径通常是  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 。在这个路径下,你可以找到所有已安装的应用程序的列表。每个应用程序都有一个唯一的子键,其中包含有关该应用程序的信息,如其安装路径,版本号等。

要写入注册表,你需要使用 Microsoft.Win32.Registry 命名空间。以下是一个简单的示例,它打开一个键并写入一个值:
using Microsoft.Win32;

public class Example
{
    public static void Main()
    {
        // 打开子键
        RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall", true);

        // 检查键是否存在
        if (key != null)
        {
            // 创建新的子键
            RegistryKey newkey = key.CreateSubKey("YourKeyName");

            // 检查新键是否创建成功
            if (newkey != null)
            {
                // 写入值
                newkey.SetValue("YourValueName", "YourValue");
                newkey.Close();
            }

            key.Close();
        }
    }
}

注意,你应该谨慎地操作注册表,因为错误的更改可能会导致系统不稳定或者无法启动。

此外,你的应用程序可能需要管理员权限才能修改 HKEY_LOCAL_MACHINE 中的键。如果你在没有管理员权限的情况下运行这段代码,可能会收到一个错误消息。因此,你可能需要在你的程序的清单文件中请求提升权限。

另一个要注意的是,不同的Windows版本可能有不同的注册表结构和键名。你应该在你的目标系统上进行测试,以确保你的代码能够正常工作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-26 17:45:10 | 显示全部楼层    本楼为最佳答案   
操作注册表用.reg就行了
https://www.cnblogs.com/fczjuever/archive/2013/04/09/3010711.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-26 17:46:52 | 显示全部楼层
liuhongrun2022 发表于 2023-7-26 17:45
操作注册表用.reg就行了
https://www.cnblogs.com/fczjuever/archive/2013/04/09/3010711.html

我还在苦苦寻找 WinReg 教程……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2023-7-26 17:50:25 | 显示全部楼层
liuhongrun2022 发表于 2023-7-26 17:45
操作注册表用.reg就行了
https://www.cnblogs.com/fczjuever/archive/2013/04/09/3010711.html

那么如何移除注册表项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-26 18:09:28 | 显示全部楼层

[xxx/xxx/xxx]
前面加个减号
-[xxx/xxx/xxx]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 22:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表