πŸ€–μ •λ³΄λ³΄μ•ˆ/β€οΈλ ˆλ“œνŒ€

[파이썬] κΆŒν•œ μƒμŠΉ λͺ…λ Ήμ–΄(간단 μ΅œμ’…)

TwoIceFish 2022. 7. 1. 12:26

 

ν•΄λ‹Ή 파이썬 ν•¨μˆ˜λ‘œ μ•„λž˜μ™€ 같이 졜고 κΆŒν•œμ˜ ν”„λ‘œκ·Έλž¨ 싀행을 ν•  수 μžˆλ‹€.

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) μ°½μ—μ„œ μŠΉμΈμ„ μš”ꡬ할 μˆ˜ μžˆμœΌλ©°, μ‹œμŠ€ν…œ λ³΄μ•ˆ μ •μ±…에 λ”°λΌ λ™μž‘ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. κΆŒν•œ μƒμŠΉμ΄ λ°˜λ“œμ‹œ ν•„μš”ν•œ κ²½μš°μ—λ§Œ μ‚¬μš©ν•˜κ³ , λ³΄μ•ˆμ— μ£Όμ˜ν•˜μ—¬ μ‚¬μš©ν•˜μ„Έμš”.