0

У меня есть код (C++ win32 api), который проверяет подпись файлов. Тот же код, выполненный в ActiveX и в пользовательском действии MSI.WinVerifyTrust использует политику проверки драйверов Windows при запуске как часть пользовательского действия MSI

Когда он запускается как часть ActiveX, проверка выполняется успешно, но когда он выполняется как часть пользовательского действия MSI, проверка завершается с ошибкой.

Я использовал файл signtool.exe и проверял файлы. Таким образом, флажок/pa не проверяется. По какой-то причине я предполагаю, что при выполнении в ActiveX политики проверки подлинности по умолчанию и при выполнении пользовательских действий MSI - он использует политику проверки драйверов Windows.

Любые идеи, как заставить его работать в MSI?

Благодаря Заки

+0

Ну, похоже, это не связано с политикой Windows Driver Policy, так как другие файлы, которые успешно проверяются в обоих случаях (из MSI и ActiveX), получают ошибку при использовании signtool.exe без флага PA. – Zaky

+0

Нижняя строка WinVerifyTrust возвращает код ошибки 0x800B0109 при проверке файла. – Zaky

ответ

0

Проблема была решена, когда я добавил сертификат на уровне МАШИНЫ для издательских услуг.

+0

Что значит подписать сертификат на уровне MACHINE для издательских услуг? Моя проблема связана с установкой vC++ 2010, потому что она жалуется, что vc_red.cab имеет недопустимую цифровую подпись. Я использовал signtool для проверки подписи, также нормально с флагом/pa, в противном случае ничего не было. Я установил сертификат подписи Microsoft, но проблема все еще там. Я делаю что-то неправильно? Проблема возникает на некоторых машинах, но на некоторых машинах она устанавливается нормально. –

+0

Если я правильно помню, я ссылался на корневой сертификат, который был пропущен под машиной, но существовал под текущей учетной записью пользователя. На рабочей машине проверьте всю цепочку с помощью свойства Digital Signature и неработающей машины. Вы можете экспортировать необходимые сертификаты с рабочего компьютера и импортировать его в нерабочее время в разделе соответствия. Я думаю, что у меня были проблемы с доверенными корневыми центрами. Запустите mmc и добавьте оснастку сертификатов. Также обратите внимание на сертификаты Countersignature. – Zaky

+0

Я нашел решение, сертификат, который поставляется с установщиком, истек в 2012 году. Поэтому я загрузил новую копию программы установки из Microsoft, и теперь она отлично работает. –