kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

python用winreg读取注册表

https://cloud.tencent.com/developer/article/1910137

https://docs.python.org/zh-cn/3.14/library/winreg.html

注册表中常用的数据类型有:

1
2
3
4
REG_SZ:字符串数据的主要类型,用于存储固定长度的字符串或其他短文本值。我们在实际程序中常用这种数据类型,如果要保存布尔值时,将它表示成0或1。
REG_BINARY:用于存储二进制数据。
REGEXPANDSZ:可扩展的字符串值,可以保存在运行时才解析的系统变量。
REGMULTISZ:以数组的格式保存多个文本字符串,每个字符串"元素"都以null字符结束。

检索键值操作

1
2
3
4
5
6
7
8
winreg.QueryInfoKey(key) 
以元组形式返回键的信息

winreg.QueryValue(key, sub_key) 
以字符串形式检索键的未命名值

winreg.QueryValueEx(key, value_name) 
检索与打开注册表项关联的指定值名称的类型和数据

其他操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
winreg.EnumKey(key, index) 
枚举打开注册表的键

winreg.EnumValue(key, index) 
枚举打开注册表项的值

winreg.OpenKey(key, subkey,sam=KEYREAD) 
打开指定键

winreg.FlushKey(key) 
刷新注册表

winreg.LoadKey(key, subkey, filename) 
在指定键下创建一个子键,并将注册信息从指定文件存储到该子键中

样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import winreg
import json
import datetime
import sys
import http.client
import requests
import os
import socket
import platform

def listreg(dd, ddd, parr = []):
	js = dict();
	print(ddd)
	try:
		key = winreg.OpenKey(dd, ddd)
		# print(key)

	
		v1, v2, v3 = winreg.QueryInfoKey(key)
		print(v1, v2, v3)
		js['k'] = v1
		js['v'] = v2
		js['t'] = v3

		k = 0
		kr = dict()
		while k < v1:
			w1 = winreg.EnumKey(key, k)
			print(w1)
			kr[k] = w1
			k = k + 1
		js['kv'] = kr

		k = 0
		kr = dict()
		while k < v2:
			w1, w2, w3 = winreg.EnumValue(key, k)
			if len(parr) != 0 and w1 not in parr:
				k = k + 1
				continue
			if 'BITMAP' in w1:
				k = k + 1
				continue
			if w3 == 3:  # REG_BINARY
				pp = ""
				for cc in w2:
					# print(hex(cc), end=" ")
					pp = pp + str(hex(cc)) + " "
				w2 = pp
				# print("")
			print(w1, "\t", w2, "\t", w3)
			kr[k] = [w1, w2, w3]
			k = k + 1
		js['vv'] = kr 
		print("")
		return js
	except:
		js['t'] = 'except'
		return js

tk = r'SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient'
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, tk, 0, winreg.KEY_WRITE)
r = winreg.SetValueEx(key, 'SpecialPollInterval', 0, winreg.REG_DWORD, 3600)

#os.system('net stop w32time > nul')
os.system('net start w32time > nul')
os.system('w32tm /resync /force > nul')

tk = r'SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient'
js1[tk] = listreg(winreg.HKEY_LOCAL_MACHINE, tk, ['Enabled', 'SpecialPollInterval'])
tk = r'SYSTEM\CurrentControlSet\Services\W32Time\Parameters'
js1[tk] = listreg(winreg.HKEY_LOCAL_MACHINE, tk, ['NtpServer'])

用户

HKEY_CURRENT_USER 只能获取当前用户信息

HKEY_USERS 要获取其他用户信息得读取,要先从 SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 读取用户信息

HKEY_LOCAL_MACHINE 设备信息

pdf的默认打开方式

1
2
3
HKEY_CURRENT_USER

Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\OpenWithList

默认打印机

1
2
3
4
HKEY_CURRENT_USER

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
中Devide

python如何读取安装的软件

https://www.cnblogs.com/warrior-tian/p/12688241.html

1
2
3
HKEY_LOCAL_MACHINE

SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

注册表 usb设备列表

1
2
3
4
5
在注册表里查看USB设备列表,主要看这几个路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR(存储类设备)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB(所有USB设备)。

language, python

« python如何读取硬件信息 Python三种标准输出重定向方法 »