Python解锁Windows屏幕
需要在Windows设置
步骤1: 进入BIOS/UEFI设置
重启计算机:
在计算机启动时,按下 Esc 键,通常会出现一个菜单。
进入BIOS设置:
在菜单中,按 F10 键进入 BIOS 设置。
步骤2: 禁用安全引导
找到安全引导选项:
在 BIOS 设置中,使用箭头键导航到“安全”或“启动”选项卡(具体名称可能因惠普笔记本型号而异)。
禁用安全引导:
找到“安全引导”(Secure Boot)选项,将其设置为“禁用”(Disabled)。
保存更改并退出:
按 F10 键保存更改并退出 BIOS 设置。
步骤3: 以管理员身份运行命令提示符
打开命令提示符:
在Windows中,右键点击“开始”按钮,选择“Windows PowerShell(管理员)”或“命令提示符(管理员)”。
输入命令:
输入以下命令并按回车:
cmd
bcdedit /set testsigning on
步骤4: 重启计算机
运行完命令后,重启计算机以使更改生效。
步骤5: 确认更改
使用Python代码
import pywinio
import time
import atexit
KBC_KEY_CMD = 0x64
KBC_KEY_DATA = 0x60
g_winio = None
def get_winio():
global g_winio
if g_winio is None:
g_winio = pywinio.WinIO()
atexit.register(cleanup)
return g_winio
def cleanup():
global g_winio
g_winio = None
def wait_for_buffer_empty():
winio = get_winio()
dwRegVal = 0x02
while (dwRegVal & 0x02):
dwRegVal = winio.get_port_byte(KBC_KEY_CMD)
def key_down(scancode):
winio = get_winio()
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_CMD, 0xd2)
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_DATA, scancode)
def key_up(scancode):
winio = get_winio()
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_CMD, 0xd2)
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_DATA, scancode | 0x80)
def key_press(scancode, press_time=0.2):
key_down(scancode)
time.sleep(press_time)
key_up(scancode)
VK_CODE = {
'1': 0x02,
'2': 0x03,
'3': 0x04,
'4': 0x05,
'5': 0x06,
'6': 0x07,
'7': 0x08,
'8': 0x09,
'9': 0x0A,
'0': 0x0B,
'a': 0x1E,
'b': 0x30,
'c': 0x2E,
'd': 0x20,
'e': 0x12,
'f': 0x21,
'g': 0x22,
'h': 0x23,
'i': 0x17,
'j': 0x24,
'k': 0x25,
'l': 0x26,
'm': 0x32,
'n': 0x31,
'o': 0x18,
'p': 0x19,
'q': 0x10,
'r': 0x13,
's': 0x1F,
't': 0x14,
'u': 0x16,
'v': 0x2F,
'w': 0x11,
'x': 0x2D,
'y': 0x15,
'z': 0x2C,
'backspace': 0x0E,
'clear': 0x0C,
'enter': 0x0D,
'shift': 0x10,
'ctrl': 0x11,
'alt': 0x12,
'caps_lock': 0x3A,
'-': 0x0C,
'=': 0x0D,
'[': 0x1A,
']': 0x1B,
'\\': 0x2B,
';': 0x27,
"'": 0x28,
'`': 0x29,
',': 0x33,
'.': 0x34,
'/': 0x35,
}
def key_input(str):
for c in str:
try:
key_press(VK_CODE[c])
except:
key_press(0x3A)
time.sleep(0.5)
key_press(VK_CODE[c.lower()])
key_press(0x3A)
if __name__ == "__main__":
pwd = "123456" # 输入密码
key_press(0x1C) # Enter 键
key_input(pwd)
time.sleep(2)
key_press(0x1C) # Enter 键
```python
Python解锁Windows屏幕
需要在Windows设置
步骤1: 进入BIOS/UEFI设置
重启计算机:
在计算机启动时,按下 Esc 键,通常会出现一个菜单。
进入BIOS设置:
在菜单中,按 F10 键进入 BIOS 设置。
步骤2: 禁用安全引导
找到安全引导选项:
在 BIOS 设置中,使用箭头键导航到“安全”或“启动”选项卡(具体名称可能因惠普笔记本型号而异)。
禁用安全引导:
找到“安全引导”(Secure Boot)选项,将其设置为“禁用”(Disabled)。
保存更改并退出:
按 F10 键保存更改并退出 BIOS 设置。
步骤3: 以管理员身份运行命令提示符
打开命令提示符:
在Windows中,右键点击“开始”按钮,选择“Windows PowerShell(管理员)”或“命令提示符(管理员)”。
输入命令:
输入以下命令并按回车:
cmd
bcdedit /set testsigning on
步骤4: 重启计算机
运行完命令后,重启计算机以使更改生效。
步骤5: 确认更改
使用Python代码
import pywinio
import time
import atexit
KBC_KEY_CMD = 0x64
KBC_KEY_DATA = 0x60
g_winio = None
def get_winio():
global g_winio
if g_winio is None:
g_winio = pywinio.WinIO()
atexit.register(cleanup)
return g_winio
def cleanup():
global g_winio
g_winio = None
def wait_for_buffer_empty():
winio = get_winio()
dwRegVal = 0x02
while (dwRegVal & 0x02):
dwRegVal = winio.get_port_byte(KBC_KEY_CMD)
def key_down(scancode):
winio = get_winio()
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_CMD, 0xd2)
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_DATA, scancode)
def key_up(scancode):
winio = get_winio()
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_CMD, 0xd2)
wait_for_buffer_empty()
winio.set_port_byte(KBC_KEY_DATA, scancode | 0x80)
def key_press(scancode, press_time=0.2):
key_down(scancode)
time.sleep(press_time)
key_up(scancode)
VK_CODE = {
'1': 0x02,
'2': 0x03,
'3': 0x04,
'4': 0x05,
'5': 0x06,
'6': 0x07,
'7': 0x08,
'8': 0x09,
'9': 0x0A,
'0': 0x0B,
'a': 0x1E,
'b': 0x30,
'c': 0x2E,
'd': 0x20,
'e': 0x12,
'f': 0x21,
'g': 0x22,
'h': 0x23,
'i': 0x17,
'j': 0x24,
'k': 0x25,
'l': 0x26,
'm': 0x32,
'n': 0x31,
'o': 0x18,
'p': 0x19,
'q': 0x10,
'r': 0x13,
's': 0x1F,
't': 0x14,
'u': 0x16,
'v': 0x2F,
'w': 0x11,
'x': 0x2D,
'y': 0x15,
'z': 0x2C,
'backspace': 0x0E,
'clear': 0x0C,
'enter': 0x0D,
'shift': 0x10,
'ctrl': 0x11,
'alt': 0x12,
'caps_lock': 0x3A,
'-': 0x0C,
'=': 0x0D,
'[': 0x1A,
']': 0x1B,
'\\': 0x2B,
';': 0x27,
"'": 0x28,
'`': 0x29,
',': 0x33,
'.': 0x34,
'/': 0x35,
}
def key_input(str):
for c in str:
try:
key_press(VK_CODE[c])
except:
key_press(0x3A)
time.sleep(0.5)
key_press(VK_CODE[c.lower()])
key_press(0x3A)
if __name__ == "__main__":
pwd = "123456" # 输入密码
key_press(0x1C) # Enter 键
key_input(pwd)
time.sleep(2)
key_press(0x1C) # Enter 键
```python