@WaterWalk

Как из Python отдать команды в PowerShell от имени администратора?

Я хочу вводить вот эту команду "slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX" в Powershell от имени администратора. Что я не так делаю?
import os

os.system('powershell Start-Process "slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX" -Verb RunAs')
  • Вопрос задан
  • 350 просмотров
Пригласить эксперта
Ответы на вопрос 4
Vindicar
@Vindicar
RTFM!
Нужно, чтобы твой скрипт был запущен от имени администратора.
Можно использовать команду runas, но она потребует пароль.
Ответ написан
Комментировать
@BeatHazard
Ну для начала команда должна выглядеть так:
powershell -command "Start-Process "slmgr" -ArgumentList "/ipk W269N-WFGWX-YVC9B-4J6C9-T83GX" -Verb RunAs"

Поправил
Ответ написан
@NortheR73
системный инженер
SLMGR - это все-таки VBS-скрипт для Windows Scripting Host (WSH), который есть cscript.exe, а не powershell.exe.
Можно, конечно, его и через PowerShell запустить - но у Вас и так какой-то Франкенштейн: VBS внутри PowerShell внутри Python.
Почему Вы не можете выполнить просто cscript.exe slmgr...? Вам обязательно все это запихивать в Python?
Ответ написан
@MaxKozlov Куратор тега PowerShell
Вот тут есть метод запуска самого себя из под админа
https://stackoverflow.com/a/41930586

import ctypes, sys

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    # Code of your program here
    print("I'm admin")
    input()
else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)

Берём отсюда последнюю строчку и вместо sys.executable ставим slmgr.vbs и тд
или можно вместо 'i'm admin' вставить
ctypes.windll.shell32.ShellExecuteW(None, "", "slmgr.vbs", "/ipk W269N-WFGWX-YVC9B-4J6C9-T83GX", None, 1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы