歌者文明清理员 发表于 2023-7-26 17:33:54

如何操作注册表,写入程序?

如题,我操作注册表内的的软件信息(安装的应用),路径是什么?
chatgpt 回答论坛问题应当制止

学习编程中的Ben 发表于 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)
    for i in range(num_subkeys):
      subkey_name = winreg.EnumKey(key, i)
      subkey = winreg.OpenKey(key, subkey_name)
      software_name = winreg.QueryValueEx(subkey, "DisplayName")
      software_version = winreg.QueryValueEx(subkey, "DisplayVersion")
      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"。

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

希望这对你有所帮助!如果你有其他问题,请随时提问。求给个最佳答案,非常感谢{:10_254:}
只要点击我的回复贴写着发表时间的那一栏的绿色按钮即可!-->https://i.imgtg.com/2023/07/24/Oh0mQB.png

此回答源于ChatGPT,若有不正确之处,请多包容

Mike_python小 发表于 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 winreg

def 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)):
            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)


上述示例代码只是读取了当前用户的注册表中的软件信息,你可以根据需要修改路径和条件来获取更具体的软件信息。请注意,在操作注册表时要小心,确保仅对你有权限的注册表键进行操作,并备份重要的注册表项以防止意外。

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 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版本可能有不同的注册表结构和键名。你应该在你的目标系统上进行测试,以确保你的代码能够正常工作。

liuhongrun2022 发表于 2023-7-26 17:45:10

操作注册表用.reg就行了
https://www.cnblogs.com/fczjuever/archive/2013/04/09/3010711.html

歌者文明清理员 发表于 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 教程……

歌者文明清理员 发表于 2023-7-26 17:50:25

liuhongrun2022 发表于 2023-7-26 17:45
操作注册表用.reg就行了
https://www.cnblogs.com/fczjuever/archive/2013/04/09/3010711.html

那么如何移除注册表项

liuhongrun2022 发表于 2023-7-26 18:09:28

歌者文明清理员 发表于 2023-7-26 17:50
那么如何移除注册表项


前面加个减号
-
页: [1]
查看完整版本: 如何操作注册表,写入程序?