Форум сайта python.su
К примеру “pnputil.exe”
Насколько я понимаю напрямую это невозможно, даже пробовал создавать батник и запускать - результат такойже как и у subprocess.call() - т.е. “файл не найден” если не поставить shell = True, и “pnputil.exe не является приложением…” если поставить.
Неужель нет способа?
Зы. гуглил, да, ничего не нагуглил
Отредактировано Iskatel (Ноя. 8, 2016 22:26:33)
Офлайн
предлагаю пихнуть в планировщик)
а так на стеке вот что пишут
Отредактировано izekia (Ноя. 8, 2016 22:47:27)
Офлайн
izekia
предлагаю пихнуть в планировщик)
Офлайн
попробуй по ссылке выше пример, правда для плюсов, но на питоне это должно быть, я сам не могу проверить у меня все питоны 64
Офлайн
izekia
попробуй по ссылке выше пример, правда для плюсов, но на питоне это должно быть, я сам не могу проверить у меня все питоны 64
Отредактировано Iskatel (Ноя. 8, 2016 22:55:01)
Офлайн
In both Linux and Windows , 32-bit applications can start a 64-bit process using the relevant “create a new process” system call .
Офлайн
izekia
не увидел где не взлетело
Офлайн
то есть вот такой вариант - это не то?
> python Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul 5 2016, 11:45:57) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from run64from32 import LaunchWin32Process >>> LaunchWin32Process('C:\\tools\\Anaconda3\\python.exe') >>> Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Отредактировано izekia (Ноя. 8, 2016 23:36:54)
Офлайн
izekia
Спасибо, любопытно, но я пока на двойке…
Офлайн
Iskatel
ну слушай, бро, ты такой привередливый:)
(py27_32) user@AMD c:\work\tuts\python\stuff > python Python 2.7.12 |Continuum Analytics, Inc.| (default, Jun 29 2016, 11:42:13) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. Anaconda is brought to you by Continuum Analytics. Please check out: http://continuum.io/thanks and https://anaconda.org >>> import run64from32 >>> with run64from32.disable_file_system_redirection(): ... run64from32.LaunchWin32Process('c:\\windows\\system32\\pnputil.exe') ... >>> Служебная программа PnP Майкрософт Использование: ------ pnputil.exe [-f | -i] [ -? | -a | -d | -e ] <имя INF-файла> Примеры: pnputil.exe -a a:\usbcam\USBCAM.INF -> Добавляет пакет, указанный USBCAM.INF pnputil.exe -a c:\drivers\*.inf -> Добавляет все пакеты в c:\drivers\ pnputil.exe -i -a a:\usbcam\USBCAM.INF -> Установка пакета драйверов pnputil.exe -e -> Перечисляет все сторонние пакеты pnputil.exe -d oem0.inf -> Удаляет пакет oem0.inf pnputil.exe -f -d oem0.inf -> Принуждает удалить пакет oem0.inf pnputil.exe -? -> Выводит эту справку >>>
# run64from32.py import win32process import sys import ctypes def LaunchWin32Process(command): try: StartupInfo = win32process.STARTUPINFO() win32process.CreateProcess( None, command, None, None, 0, win32process.NORMAL_PRIORITY_CLASS, None, None, StartupInfo) except Exception as e: print(sys.exc_info()) print("Exception in LaunchWin32Process") pass class disable_file_system_redirection: _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection def __enter__(self): self.old_value = ctypes.c_long() self.success = self._disable(ctypes.byref(self.old_value)) def __exit__(self, type, value, traceback): if self.success: self._revert(self.old_value)
Офлайн