Есть задача: из каталога выбирать все сертификаты *.cer и инсталить их в локалмашин стор.
Для этого использую Micrisoft's утилиту certmgr.exe.
Если это делать через bat файл
certmgr -add -c root2.crt -s -r localMachine CA
certmgr -add -c root3.crt -s -r localMachine CA
certmgr -add -c root4.crt -s -r localMachine CA
например то все ок. Появляется окошко в который воводится весь лог.
А если запускаю через пайтон скрипт то окошек рождается количество равно количеству сертификатов в каталоге.
Такое ощущение, что пайтон каждый раз новый процесс инициализирует, а bat все через один гонит.
def install_certs(ext): list_certs = [fname for fname in os.listdir('.') if (os.path.splitext(fname))[-1] == ext ] for cert in list_certs: proc = subprocess.Popen(['certmgr.exe', '-add', '-c', '%s'% cert, '-s', '-r', 'localMachine', 'CA'] ,shell=False, stdout=subprocess.PIPE) out = proc.communicate() os.remove(cert)