Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/75: Рейтинг темы: голосов - 75, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 123

Как запустить программу из скрипта под админом с параметрами командной строки

10.07.2019, 12:26. Показов 15884. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, у меня есть задача надо запустить процесс(subprocess) под админом с параметрами командной строки, но я не могу найти как мне это сделать, вручную запускаю в консоле под админом - норм.

Джаст ин кейс: ОС = Швиндовс

P.S.еще паралельно искал как сделать одновременно вывод в консоль, на данный момент пока есть такое решение, буду рад предложениям по улучшению/изменению.

Python
1
2
3
4
5
cmd = 'MyProgram --flag VAL'
    p = Popen(cmd, shell = True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds = True)
    for line in p.stdout:
        line2 = line.rstrip()  
        print line2
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2019, 12:26
Ответы с готовыми решениями:

Как запустить программу из командной строки?
Я просто новичок(начинал когда-то, потом забросил на длительное время), а сейчас снова надо

Как скомпилировать и запустить java программу из командной строки ?
Добрый день. Хочу скомпилировать и запустить программу из командной строки. Но никак не получается. Выводит вот что:

как из командной строки запустить программу в режиме совместимости с XP?
поставил семерку, а дрова на звук сущетсвуют только для xp, но дрова установились, звук появился, но микшер (который в трее висит)...

11
5025 / 1054 / 147
Регистрация: 29.01.2013
Сообщений: 6,176
10.07.2019, 12:48
Smeh_, у вас проблема в том, что бы запустить от имени администратора, или в том, что бы запустить стороннее приложение?

Добавлено через 31 секунду
и, судя по всему, python 2.7?
0
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 123
10.07.2019, 12:54  [ТС]
Запустить от имени администратора.

Можно и python 3, если нет каких либо проблем между версиями.
0
5025 / 1054 / 147
Регистрация: 29.01.2013
Сообщений: 6,176
10.07.2019, 12:59
Цитата Сообщение от Smeh_ Посмотреть сообщение
Запустить от имени администратора.
Это просто: у cmd есть утилита runas. Таким образом, запуская приложение из командной строки, вы вполне можете указать конкретного пользователя, обладающего соответствующими правами.
0
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 123
10.07.2019, 13:05  [ТС]
Что-то на подобии такого?

Python
1
2
3
4
5
6
7
8
9
10
11
12
def run():  
    process = Popen(['runas', '/noprofile', '/user:Administrator', 'MyProgram', '--opt', 'VAL'],stdin=sp.PIPE)
    while True:
        line = process.stdout.readline().rstrip()
        if not line:
            break
        yield line
 
            
if __name__ == "main":  
    for path in run():
        print (path)
P.S. не работает :/
0
5025 / 1054 / 147
Регистрация: 29.01.2013
Сообщений: 6,176
10.07.2019, 16:50
Smeh_, как-то мне чем-то не нравится ваш код.. Я бы использовал что-то в духе

Python
1
2
3
import subprocess
 
output = subprocess.check_output('notepad')
Мой метод, через runas, не подойдёт, там требуется ручной ввод пароля. Мне кажется, это не ваш вариант.
Есть ещё вариант не через cmd, а через powershell, но получается какая-то монструозная конструкция.
Возможно, стоит решать задачу как-то по-другому?
0
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 123
11.07.2019, 10:38  [ТС]
Вот, что я нашел на данный момент.
Python
1
2
3
4
5
6
7
8
9
10
11
12
def main():
    if is_admin():  
        for line in run():
            print "Test"            
    else:
        # Re-run the program with admin rights
        ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)  
def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
0
5025 / 1054 / 147
Регистрация: 29.01.2013
Сообщений: 6,176
11.07.2019, 10:58
Такое решение мне кажется более элегантным, чем через powershell
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.07.2019, 11:52
Парни, вы чего-то мудрите...

В винде есть так называемые командные "глаголы" (verb), действия выполняемые из контекстного меню. Те, кто знает vbsсript\jscript и windows script host - должны быть с этим знакомы.
В python доступ к этим глаголам тоже реализован. И вызывать ShellExecuteW напрямую не требуется.
os.startfile(path[, operation])
Start a file with its associated application.

When operation is not specified or 'open', this acts like double-clicking the file in Windows Explorer, or giving the file name as an argument to the start command from the interactive command shell: the file is opened with whatever application (if any) its extension is associated.

When another operation is given, it must be a “command verb” that specifies what should be done with the file. Common verbs documented by Microsoft are 'print' and 'edit' (to be used on files) as well as 'explore' and 'find' (to be used on directories).

startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status. The path parameter is relative to the current directory. If you want to use an absolute path, make sure the first character is not a slash ('/'); the underlying Win32 ShellExecute() function doesn’t work if it is. Use the os.path.normpath() function to ensure that the path is properly encoded for Win32.

To reduce interpreter startup overhead, the Win32 ShellExecute() function is not resolved until this function is first called. If the function cannot be resolved, NotImplementedError will be raised.

Availability: Windows.
0
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 123
11.07.2019, 12:32  [ТС]
А не подскажете как передать в в открытую консоль параметры типа 'MyProgram --flag VAL' запустить и поотлавливать аутпут?
Я пока курю документацию, но уже поплава полная :/
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.07.2019, 13:12
Цитата Сообщение от Smeh_ Посмотреть сообщение
как передать в в открытую консоль параметры типа 'MyProgram --flag VAL' запустить и поотлавливать аутпут
Никак. Способ со startfile\ShellExecute не предполагает ничего, кроме запуска приложения от админа, как если бы мы сделали это вручную из контекстного меню.
Для нормальных программ, которым реально требуются повышенные права, создаются манифесты, которые вшиваются в exe. Windows, читая такой манифест, понимает что приложение хочет прав и автоматически запускает окошко UAC для юзера, чтобы тот уже решил - запускать\не запускать.
Все прочие "обходные" способы запуска приложения с повышенными правами - из разряда FuckUAC. Можете погуглить.
2
0 / 0 / 0
Регистрация: 11.08.2015
Сообщений: 123
11.07.2019, 20:53  [ТС]
Слушай, а ты не можешь помочь в одном моменте?
Python
1
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
Как мне застопить выполнения скрипта до тех пор пока ShellExecuteW не завершиться?Пошто мне уже поздно коней на переправе менять :/

Добавлено через 3 минуты
Я пока такое намутил но не уверен.
Python
1
2
3
4
thread = threading.Thread(ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1))
            
            thread.start()
            thread.join()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2019, 20:53
Помогаю со студенческими работами здесь

Как запустить в С# rnaapp с параметрами в командной строке?
Help me, please ... Как запустить в С# rnaapp с параметрами в командной строке?

Создать программу, работающую с параметрами командной строки
Написать программу, которая должна принимать только параметры командной строки. Содержать справку. * Программа может принимать...

Не могу запустить программу из командной строки
from vk_api import VkApi from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType from datetime import datetime vk_session =...

Как запустить программу с параметрами?
Как запустить программу: srcds.exe ( путь D:\csserver\server) С параметрами: -console -game cstrike -port 27015 +maxplayers 24 +map...

Как запустить программу с параметрами?
Доброе время суток, форумчане! Я только недавно начал программировать на С++ и у меня возник вопрос: как при в своей программе нажатии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru