import winreg as reg
import ctypes
import sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def get_user_list_value(username):
"""Получает текущее значение в реестре для указанного пользователя."""
try:
key = reg.OpenKey(reg.HKEY_LOCAL_MACHINE,
r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList")
value, _ = reg.QueryValueEx(key, username)
reg.CloseKey(key)
return value
except FileNotFoundError:
print(f"Пользователь '{username}' не найден в UserList.")
return None
except Exception as e:
print(f"Ошибка при получении значения: {e}")
return None
def set_user_list_value(username, value):
try:
# Открываем ключ реестра
key = reg.OpenKey(reg.HKEY_LOCAL_MACHINE,
r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList",
0, reg.KEY_SET_VALUE)
# Устанавливаем значение
reg.SetValueEx(key, username, 0, reg.REG_DWORD, value)
reg.CloseKey(key)
print(f"Значение для пользователя '{username}' установлено на {value}.")
except Exception as e:
print(f"Ошибка: {e}")
if __name__ == "__main__":
if not is_admin():
print("Скрипт не запущен с правами администратора. Запрашиваю повышение прав...")
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
else:
print("Скрипт запущен с правами администратора.")
username = "student" # Замените на нужное имя пользователя
current_value = get_user_list_value(username)
print(current_value)
if current_value is not None:
print(f"Текущее значение для пользователя '{username}': {current_value}")
# 0 для скрытия, 1 для отображения
new_value = 0 if current_value == 1 else 1
print(f"Инвертируем значение для пользователя '{username}' на {new_value}.")
set_user_list_value(username, new_value)