import ctypes
import sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
# Код, который требует прав администратора
print("Программа запущена с правами администратора")
input("Нажмите Enter для завершения программы...")
else:
# Перезапускаем программу с запросом прав администратора
ctypes.windll.shell32.ShellExecuteW(
None, "runas", sys.executable, " ".join(sys.argv), None, 1
)
Для добавления значка "щита" перед иконкой программы, вы можете создать файл манифеста (your_program.exe.manifest) с указанием требования администраторских прав. Пример содержимого манифеста:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>