При сборке проекта outprocess COM-сервера в VS2017 в окне вывода получаю ошибки:
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1846,5): warning MSB3073: выход из команды ""D:\Projects\VS\Projects\ProdOPC\Debug\ProdOPC.exe" /RegServer" с кодом -2147024891. 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1852,5): error MSB8011: не удалось зарегистрировать выход. Попробуйте включить перенаправления регистраций пользователя или зарегистрировать компонент из командной строки, запущенной с повышенными разрешениями. 1>Сборка проекта "ProdOPC.vcxproj" завершена с ошибкой.
Код ошибки -2147024891, он же 0x80070005, он же E_ACCESSDENIED (General access denied error).
Причина: недостаточно прав для (само-)регистрации исполнимого модуля проекта.
Возможные пути обхода:
- Перезагрузить Студию от имени администратора.
- Отключить регистрацию модуля после сборки проекта, а затем запустить ее вручную из командной строки от имени администратора. Отключение/включение регистрации после сборки выполняется следующим образом: Свойства проекта —> Компоновщик (Linker)—> Общие (General) —> Зарегистрировать вывод (Register Output) —> Нет (Да). Вручную из командной строки регистрировать так: «<имя_модуля>.exe /RegServer».
Описание выполняемой задачи регистрации содержится в файле c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets (тэг Target с атрибутом Name=»RegisterOutput«).