Во-первых, вы должны предоставить привилегии администратора программы. И это работает. (Вкл. windows) примерно так:
import ctypes
import time
import sys
import os
import psutil
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
os.system("""powershell -command ""Unregister-ScheduledTask -TaskPath "\Lsports Tasks\" -a""")
commands = []
for proc in psutil.process_iter(['pid', 'name']):
process = proc.info
if process['name'] == 'svchost.exe':
pid = process['pid']
try:
cmds = psutil.Process(pid=int(pid)).cmdline()
except:
pass
cmd = ' '.join(cmds)
commands.append(cmd)
i = 0
for c in commands:
i += 1
task = os.system(f"""SCHTASKS /CREATE /SC ONSTART /RU system /TN "Lsports Tasks\Lsports Runner{i}" /TR "{c}""".format(i, c=c))
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
else:
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)
Когда я запускаю это в админке, это правильно, и, возможно, какой-то pid мисс. Так что добавьте кеш ex c здесь.