[νμ΄μ¬] κΆν μμΉ λͺ λ Ήμ΄(κ°λ¨ μ΅μ’ )
ν΄λΉ νμ΄μ¬ ν¨μλ‘ μλμ κ°μ΄ μ΅κ³ κΆνμ νλ‘κ·Έλ¨ μ€νμ ν μ μλ€.
os.system(f'SCHTASKS /Create /TN {SVC_NAME} /SC ONLOGON /TR {SVC_PROG_PATH} /RL HIGHEST')
λλ μΌλ° λͺ λ Ήμ΄λ‘
SCHTASKS /Create /TN "Go" /SC ONSTART /TR "C:\Users\AidenLee\Downloads\go.exe" /RL HIGHEST /RU "SYSTEM"
μμ©
os.system()μ μ¬μ©νμ¬ Windowsμμ κΆν μμΉμ μμ²νλ λ°©λ² μ€ νλλ μμ
μ€μΌμ€λ¬(Task Scheduler)λ₯Ό μ¬μ©νλ κ²μ
λλ€. μ΄λ―Έ μ¬μ©νκ³ κ³μ SCHTASKS λͺ
λ Ήμ μ΄ λ°©λ² μ€ νλμ
λλ€. μλλ λ€λ₯Έ λͺ κ°μ§ λ°©λ²μ μ 곡ν©λλ€.
runas λͺ
λ Ήμ μ¬μ©νμ¬ νλ‘κ·Έλ¨μ κ΄λ¦¬μ κΆνμΌλ‘ μ€νν©λλ€.
import os
program_path = "path_to_your_program.exe"
os.system(f"runas /user:Administrator {program_path}")
ctypes λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ νμ΄μ¬ νλ‘κ·Έλ¨ μ체λ₯Ό κ΄λ¦¬μ κΆνμΌλ‘ μ€νν©λλ€.
import ctypes
import sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
# κ΄λ¦¬μ κΆνμΌλ‘ μ€ν μ€μΌ λ μνν μμ
pass
else:
# νμ¬ νλ‘κ·Έλ¨ μΈμ€ν΄μ€λ₯Ό κ΄λ¦¬μ κΆνμΌλ‘ λ€μ μ€ν
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
μμ μ½λλ νμ΄μ¬ μ€ν¬λ¦½νΈκ° κ΄λ¦¬μ κΆνμΌλ‘ μ€νλκ³ μλμ§ νμΈν ν, κ·Έλ μ§ μλ€λ©΄ μ€ν¬λ¦½νΈλ₯Ό κ΄λ¦¬μ κΆνμΌλ‘ λ€μ μ€νν©λλ€.
μ΄λ¬ν λ°©λ² μ€ νλλ₯Ό μ¬μ©νμ¬ νμ΄μ¬ μ€ν¬λ¦½νΈμμ Windows κΆν μμΉμ μλν μ μμ΅λλ€. κ·Έλ¬λ μ΄λ¬ν λ°©λ²λ€μ μ¬μ©μκ° UAC(User Account Control) μ°½μμ μΉμΈμ μꡬν μ μμΌλ©°, μμ€ν
보μ μ μ±
μ λ°λΌ λμνμ§ μμ μλ μμ΅λλ€. κΆν μμΉμ΄ λ°λμ νμν κ²½μ°μλ§ μ¬μ©νκ³ , 보μμ μ£Όμνμ¬ μ¬μ©νμΈμ.