У меня есть виртуальная машина Windows 7 с двумя учетными записями пользователей (condor_usr1 и condor_usr2), которые используются для компиляции исходного кода. Учетные записи condor_usr [1 | 2] являются членами группы администраторов. У меня есть главная виртуальная машина HTCondor, которая периодически получает задания и назначает каждое задание для запуска на одной из учетных записей condor_usr [1 | 2]. Служба condor на виртуальной машине Win7 запускается как локальная системная учетная запись, но выполняемые задания фактически запускаются как учетная запись condor_usr [1 | 2].
У меня есть новое требование подписать скомпилированный исполняемый файл. Я импортировал сертификат с закрытым ключом в хранилище ключей Current User \ Personal в хранилище сертификатов Windows.
Если я вошел в виртуальную машину Win7 (например, через удаленный рабочий стол) в качестве одной из учетных записей condor_usr, то при компиляции, запущенной с этой учетной записью, будет успешно подписан исполняемый файл, но компиляции, запущенные от имени другой учетной записи, не смогут подписать исполняемый файл. Например, если я вошел в систему как condor_usr2, то компиляции, работающие под condor_usr2, будут подписаны успешно, а компиляции, запущенные под condor_usr1, не будут подписаны. Если я выйду из системы, обе учетные записи не будут подписаны.
Конкретная ошибка, которую я получаю:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(264,9): error MSB3482: An error occurred while signing: The system cannot find the file specified.
Включил ведение журнала аудита и обнаружил следующий журнал, который произошел одновременно с ошибкой подписи.
Подпишите скомпилированный исполняемый файл успешно независимо от того, под какой учетной записью выполняется компиляция, и без необходимости входа пользователя в систему.
Если не указано иное, эти действия не возымели эффекта и были отменены.
PsExec -h make.bat
для получения токена с повышенными правами. https://docs.microsoft.com/en-us/sysinternals/downloads/psexec