Мой коллега пытается зарегистрировать некоторые COM-компоненты (которые я написал) через RegAsm.exe, и он говорит, что ему нужны привилегии администратора. У его учетной записи есть привилегии администратора, но он не зарегистрирован как Администратор. Есть ли способ использовать его обычную учетную запись пользователя и преуспеть в этой задаче?
Могу ли я запустить RegAsm без администратора?
Ответ 1
Права администратора необходимы, чтобы Regasm.exe обновил реестр. Если это ограничение UAC, создайте ярлык на рабочем столе для cmd.exe и установите флажок "Запустить эту программу как администратор". Или измените этот параметр на ярлыке командной строки Visual Studio, что проще.
Ответ 2
Я работаю в среде/юрисдикции, где предоставление доступа локальным администраторам для всех пользователей просто невозможно (законность/соответствие/правила не позволят).
Похоже, нет эквивалента этой функции в мире .NET: AtlSetPerUserRegistration
Попробуйте: Используя regasm, создайте записи реестра с аргументом /regfile. По умолчанию записи реестра должны использовать HKEY_CLASSES_ROOT (HKCR) в качестве корня. Измените записи (вручную или script), чтобы использовать HKEY_CURRENT_USER (HKCU).
Наконец, распространите свою .NET DLL с помощью реестра script. Вы можете запустить regedit без прав администратора для регистрации вашей DLL-библиотеки .NET. В ручном режиме из командной строки, используя пакетный файл, или (крошечная) отдельная программа установки может обрабатывать регистрацию.
Ответ 3
Я думаю, что этот вопрос принадлежит где-то еще, но Windows использует наименьшие привилегии, поэтому, если он является пользователем, который является обычным пользователем и администратором, чем он получает обычные привилегии пользователя. Используйте runas для выполнения этой работы или щелкните правой кнопкой мыши элемент и "запустите как администратор"
Ответ 4
Почему бы вам не использовать бесплатную регистрацию? Он поддерживается только с 2003 года и устраняет необходимость в UAC/административном доступе для установки COM-компонентов.
С RegFree COM вы можете просто объединить DLL файлы COM с приложением, которое использует их как частную сборку, но это не значит, что они не могут быть правильно установлены - либо в реестре, либо в WinSxS с помощью установки окончательного развертывания .exe/MSI
Подтекст по актуальному запросу: no - Регистрация COM находится в ключе HKEY_LOCAL_MACHINE, который всегда требует доступа администратора.
Я солгал: На самом деле ты можешь. Если вы создаете приложение без манифеста вообще, Windows выводит, что это приложение эпохи XP, ожидающее административного доступа для запуска, и активирует режим совместимости, который среди других функций перенаправляет доступ на запись к HKLM в доступное для записи место в HKCU. Таким образом, регистрация COM-компонента "успешно" - но зарегистрирована только для текущего пользователя.
Я не уверен, почему возможность зарегистрироваться только для текущей учетной записи не поддерживается вообще вне рамки совместимости.
Ответ 5
Я зарегистрирован в учетной записи с правами администратора. Но RegAsm.exe все еще говорит, что ему нужны привилегии администратора.
[Из некоторых заметок, которые у меня есть для Windows 2008 R2. Подтвердите действие в других операционных системах Windows, поддерживающих UAC. Далее предполагается, что вам разрешено вносить изменения в Локальную политику безопасности.]
В своей конфигурации по умолчанию настройки контроля учетных записей (UAC) предоставляют локальным администраторам полные привилегии, но ограничивают права других членов группы "Администраторы". Чтобы снять ограничения UAC с другими членами группы "Администраторы", выполните следующие действия:
- Выберите Начать → Все программы → Администрирование → Локальная политика безопасности.
- Выберите Локальные политики → Параметры безопасности.
- На правой панели дважды щелкните третью запись снизу, которая читает Контроль учетных записей пользователей: запустите всех администраторов в режиме одобрения администратора.
- Нажмите Отключено.
- Нажмите ОК, чтобы закрыть диалоговое окно и закрыть инструмент настройки локальной политики безопасности.
- Перезагрузите компьютер, чтобы выполнить это изменение в настройках UAC.