pyhton winreg 获取值
时间: 2023-04-02 21:03:04 浏览: 76
可以使用以下代码获取注册表中指定键的值:
```python
import winreg
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion")
value = winreg.QueryValueEx(key, "ProductName")[]
print(value)
```
这个例子获取了 Windows 操作系统的产品名称。
相关问题
python代码获取电脑软件安装信息
你可以使用 Python 的 `winreg` 模块来获取 Windows 电脑上软件的安装信息。
首先,需要导入 `winreg` 模块:
```python
import winreg
```
然后,使用 `winreg.OpenKey()` 函数打开注册表的 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall` 路径,这个路径存储了 Windows 上所有已安装的软件的信息。
```python
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall')
```
接下来,使用 `winreg.QueryInfoKey()` 函数获取子键的数量,然后使用 `winreg.EnumKey()` 函数遍历所有子键,每个子键对应一个已安装的软件:
```python
num_subkeys = winreg.QueryInfoKey(key)[0]
for i in range(num_subkeys):
subkey_name = winreg.EnumKey(key, i)
subkey = winreg.OpenKey(key, subkey_name)
```
最后,使用 `winreg.QueryValueEx()` 函数获取子键中的特定值,这些值包括软件的名称、版本、安装路径等信息:
```python
display_name, _ = winreg.QueryValueEx(subkey, 'DisplayName')
version, _ = winreg.QueryValueEx(subkey, 'DisplayVersion')
install_location, _ = winreg.QueryValueEx(subkey, 'InstallLocation')
```
下面是一个完整的例子,可以输出 Windows 上已安装软件的名称、版本和安装路径:
```python
import winreg
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall')
num_subkeys = winreg.QueryInfoKey(key)[0]
for i in range(num_subkeys):
subkey_name = winreg.EnumKey(key, i)
subkey =
import urllib, urllib2, time, os, base64, json import _winreg
请注意,您的代码片段缺少缩进,无法正常运行。此外,您的代码使用的是Python 2.x版本,而Python 3.x版本中的一些模块和函数已经发生了变化。以下是一个Python 3.x版本的示例,可以将您的代码转换为Python 3.x版本:
```python
import urllib.request, urllib.parse, urllib.error
import time
import os
import base64
import json
import winreg
# 读取注册表项
def read_registry_value(key, sub_key, value_name):
try:
# 打开注册表项
reg_key = winreg.OpenKey(key, sub_key)
# 读取注册表项的值
value, regtype = winreg.QueryValueEx(reg_key, value_name)
# 关闭注册表项
winreg.CloseKey(reg_key)
return value
except WindowsError:
return None
# 获取本机的MAC地址
def get_mac_address():
# 读取注册表项
key = winreg.HKEY_LOCAL_MACHINE
sub_key = r'SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}'
value_name = 'NetCfgInstanceId'
net_cfg_instance_ids = read_registry_value(key, sub_key, value_name)
# 遍历网卡信息,获取MAC地址
mac_address = ''
for net_cfg_instance_id in net_cfg_instance_ids:
sub_key = r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}\{}'.format(net_cfg_instance_id)
value_name = 'NetworkAddress'
network_address = read_registry_value(key, sub_key, value_name)
if network_address is not None:
mac_address = network_address
break
return mac_address
# 获取本机的IP地址
def get_ip_address():
# 获取本机的主机名
hostname = os.getenv('COMPUTERNAME')
# 根据主机名获取IP地址
ip_address = socket.gethostbyname(hostname)
return ip_address
# 发送请求
def send_request(url, data):
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
req = urllib.request.Request(url, headers=headers, data=json.dumps(data).encode('utf-8'))
response = urllib.request.urlopen(req)
response_data = response.read().decode('utf-8')
return json.loads(response_data)
# 获取access_token
def get_access_token(api_key, secret_key):
url = 'https://aip.baidubce.com/oauth/2.0/token'
data = {
'grant_type': 'client_credentials',
'client_id': api_key,
'client_secret': secret_key
}
response_data = send_request(url, data)
access_token = response_data['access_token']
return access_token
# 人脸比对
def face_compare(access_token, image1, image2):
url = 'https://aip.baidubce.com/rest/2.0/face/v3/match'
data = {
'image_1': base64.b64encode(image1).decode('utf-8'),
'image_2': base64.b64encode(image2).decode('utf-8')
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
params = urllib.parse.urlencode({'access_token': access_token})
req = urllib.request.Request('{}?{}'.format(url, params), headers=headers, data=json.dumps(data).encode('utf-8'))
response = urllib.request.urlopen(req)
response_data = response.read().decode('utf-8')
return json.loads(response_data)
if __name__ == '__main__':
# API Key
api_key = 'your_api_key'
# Secret Key
secret_key = 'your_secret_key'
# 获取access_token
access_token = get_access_token(api_key, secret_key)
# 读取图片文件
with open('image1.jpg', 'rb') as f:
image1 = f.read()
with open('image2.jpg', 'rb') as f:
image2 = f.read()
# 人脸比对
response_data = face_compare(access_token, image1, image2)
# 输出比对结果
if response_data['error_code'] == 0:
similarity = response_data['result']['score']
print('相似度:{}%'.format(similarity))
else:
print(response_data['error_msg'])
```
请注意,此代码仅作为示例,实际使用时需要替换为您自己的API Key和Secret Key,并将图片文件替换为您自己的图片文件。