Я пытаюсь написать программу в питоне, который состоит из нескольких частей:Python начиная подпроцесс как администратор, не вызывая процесс будучи админами
- конфига процесса утилита
- аппаратного монитор
- фона
Идея заключается в том, что после установки (используя cx_freeze) аппаратный монитор постоянно работает в фоновом режиме, когда часть совместимого оборудования (с использованием драйвера d2xx для устройства FTDI s) подключен, он проверяет реестр, чтобы узнать, была ли он ранее настроена, если он затем запускает фоновый процесс с серийным номером в качестве аргумента, однако если он не запускает утилиту config.
Однако аппаратный монитор должен запускаться от запуска и, поскольку он только считывает из реестра, не нуждается в полных привилегиях администратора, а фоновый процесс только читает, так что также не нужны прокси-серверы, но утилита config должен иметь возможность писать в реестр и, следовательно, нуждается в администрировании.
Мой вопрос: Как я могу вызвать другую программу из python как admin и с аргументами?
Я рассмотрел использование файла os.startfile, поскольку я установил замороженную программу как требующую администратора, однако я не могу передать ей аргументы.
Я также рассматривал использование подпроцесса.Popen, но я не могу понять, как, или даже если вы можете, поднять его до уровня администратора, так что пока он откроет программу и передаст ей аргументы, которые она не может записать в реестра.
Любая помощь будет оценена, для получения дополнительной информации мой установка является:
- для Windows 7 64 бит (но также планируют сделать XP 32 бит)
- python2.7.6 (опять же 64 бит, но планируется также сделать 32 бит)
- PyUSB-1,6
- psutil-1.2.1
- cx_freeze-4.3.2
Благодаря
Джеймс
Я попытался модифицировать предложение с этой страницы: http://stackoverflow.com/questions/4645909/python-how-to-start-a-process-with-administrator-permissions подпроцесса .call (['runas', '/ user: Administrator', 'C: /my_program.exe']) Однако, как и в этом вопросе, он подсказал мне пароль (который мне нужно избегать) и отклонил его, даже когда Я набрал его. –
Я также должен добавить, когда он начнет другой процесс, я не возражаю против его запроса #, то есть поля UAC, но я должен иметь возможность создавать его с повышенными привилегиями и аргументами, которые я похоже, не может найти ни одного примера ... –