Могу ли я запустить RegAsm без администратора?

Мой коллега пытается зарегистрировать некоторые COM-компоненты (которые я написал) через RegAsm.exe, и он говорит, что ему нужны привилегии администратора. У его учетной записи есть привилегии администратора, но он не зарегистрирован как Администратор. Есть ли способ использовать его обычную учетную запись пользователя и преуспеть в этой задаче?

Ответ 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.