Предоставьте пользователю доступ для подписи файла

В командной строке от имени администратора я могу подписать файл с помощью signtool.exe. 15063.137. Однако я подписываю файл из приложения, и когда я выполняю ту же команду из приложения, команда завершается с кодом выхода 1. Я не на 100% уверен, что это проблема с разрешениями, но я догадываясь, что это. Как я могу дать разрешение пользователю, под которым работает приложение, подписать файл.

Нужно ли давать пользователю специальное разрешение на использование сертификата, который я использую?

PS: я попытался импортировать сертификат в Trusted Publishers для учетной записи компьютера, но по какой-то причине сертификат не отображается там в mmc.


person Christian Findlay    schedule 30.05.2017    source источник


Ответы (1)


Я запускаю signtool только с окном команд с обычными правами и не вижу приглашения UAC.

Но это с сертификатом, экспортированным в виде файла pfx, например:

 "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\SignTool.exe" sign /f c:\folder\cert.pfx /p PASSWORD /as /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp  /v "c:\folder\sub folder\file.exe"
person Dave S    schedule 30.05.2017
comment
Что такое подсказка UAC? - person Christian Findlay; 30.05.2017
comment
Я тоже так умею. Я могу запустить команду в командной строке без проблем. Проблема в том, что приложение пытается вызвать signtool. Я думаю, что у пользователя приложения почему-то нет разрешения. - person Christian Findlay; 30.05.2017
comment
UAC = контроль доступа пользователей. Приложения, настроенные на запуск от имени администратора, при запуске показывают запрос UAC, чтобы вы разрешили ему иметь эти права. Если вы используете учетную запись без прав администратора, вы также должны указать пароль администратора. SignTool не требует прав администратора для запуска. Ошибки прав доступа возникают из-за отсутствия доступа для чтения к PFX или доступа для записи к EXE. - person Dave S; 30.05.2017
comment
... или папку EXE. Для подписи файла в Program Files потребуются права администратора. - person Dave S; 30.05.2017
comment
Я понимаю, что вы говорите. Я проверил файлы (сертификат и целевой файл для подписи) и могу подтвердить, что пользователь IIS имеет доступ для чтения и записи к этим файлам. - person Christian Findlay; 30.05.2017
comment
Я начинаю думать, что это не проблема с разрешениями... Я проверил, что учетная запись пользователя для процесса w3wp - СИСТЕМА. Я проверил все 3 файла (сертификат, signtool.exe и целевой файл). SYSTEM имеет полный доступ ко всем трем файлам. - person Christian Findlay; 30.05.2017
comment
Если это 1 от GetLastError, это ERROR_INVALID_FUNCTION, а не ERROR_ACCESS_DENIED. Возможно, у вас есть ошибка в коде выполнения процесса, например, вы не ставите кавычки там, где это необходимо. - person Dave S; 30.05.2017
comment
Хотя это небольшая вероятность, я искренне в этом сомневаюсь... До сих пор код работал нормально. Я подписал много таких файлов. Единственное, что изменилось, это сертификат. Позже я изменил версию signtool, но это было только после того, как я начал получать ошибку. - person Christian Findlay; 30.05.2017