Skip to content

Изменение в консольных задачах после выхода SCSM SP1

Изменение в консольных задачах после выхода SCSM SP1 published on Комментариев к записи Изменение в консольных задачах после выхода SCSM SP1 нет

SCSM 2010 SP1 внес как большое число исправлений, так и некоторые нововведения. Одним из не самых приятных нововведений стало предупреждение о запуске не проверенного кода:
Эта задача выполняет следующий код, который не может быть проверен (This task will run the following unverifiable code)
akgevgjl

Разработчики добавили две проверки: пакет управления, в котором расположена консольная задача, должен быть запечатан (Sealed). Если же задача расположена в незапечатанном пакете, сборка должна быть подписана сертификатом Authenticode. Если эти условия нарушаются – появляется предупреждение выше.

Так что теперь имейте это ввиду, когда создаете собственные консольные задачи с применением кода. Пока что я смог использовать только способ хранения задачи в запечатанном пакете. Подписать сборку тестовым самовыпущенным сертификатом (“настоящий” стоит от $300 до почти $500 на один год) у меня не получилось. Чтобы проверить, подписана ли сборка сертификатом, необходимо выполнить следюущий код (реализация для Powershell, перевести это в C# не составит труда):

$dllPath = "FULL_PATH_TO_DLL"
$IsSigned = [reflection.assembly]::LoadFile($dllPath).ManifestModule.GetSignerCertificate() -ne $null
write-host "Assembly Is Signed:"$IsSigned

SCSM 2010 SP1 проверяет подпись сборки точно таким же способом.

PS. Если кто-то знает, как правильно подписать сборку сертификатом – подскажите, буду очень благодарен. Собственно, подписать у меня получилось – сертификат виден в свойствах файла. Сертификат, которым производитлась подпись, есть закрытый ключ. Но при этом вызов GetSignerCertificate() всё равно возвращает null.

Поделиться в соц. сетях

Primary Sidebar