2010-10-21 3 views
10

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

ответ

4

Права администратора необходимы, чтобы Regasm.exe обновил реестр. Если это ограничение UAC, создайте ярлык на рабочем столе для cmd.exe и установите флажок «Запустить эту программу как администратор». Или измените этот параметр в ярлыке командной строки Visual Studio, это проще.

3

Я думаю, что этот вопрос принадлежит в другом месте, но Windows использует наименьшие привилегии, поэтому, если он является пользователем, который является обычным пользователем и администратором, чем он получает обычные привилегии пользователя. Используйте runas для выполнения этой работы или щелкните правой кнопкой мыши элемент и «запустите как администратор»

3

Почему бы вам не использовать registration free com? Он поддерживается только с 2003 года и устраняет необходимость в UAC/административном доступе для установки COM-компонентов.

С RegFree COM вы можете просто связать DLL-файлы COM с приложением, которое использует их как частную сборку, но это не значит, что они не могут быть установлены правильно - либо в реестре, либо в WinSxS путем окончательного развертывания install.exe/MSI


Subtext WRT фактический запрос: нет - COM регистрации в ключе HKEY_LOCAL_MACHINE, который всегда требует доступа администратора.


Я солгал: на самом деле вы можете. Если вы создаете приложение без манифеста вообще, Windows выводит, что это приложение эпохи XP, ожидающее административного доступа для запуска, и активирует режим совместимости, который среди других функций перенаправляет доступ на запись к HKLM в доступное для записи место в HKCU. Таким образом, регистрация COM-компонента «успешно» - но зарегистрирована только для текущего пользователя.

Я не уверен, почему возможность регистрироваться только для текущей учетной записи не поддерживается вообще вне рамки совместимости.

9

Я работаю в среде/юрисдикции, где предоставление доступа локальным администраторам для всех пользователей просто невозможно (юридические/соблюдение/правила не позволят).

Оказывается нет эквивалента этой функции в мире .NET: AtlSetPerUserRegistration

Попробуйте это: Использование regasm, генерировать записи реестра с/RegFile аргументом. По умолчанию записи реестра должны использовать HKEY_CLASSES_ROOT (HKCR) в качестве корня. Измените записи (вручную или по сценарию), чтобы использовать HKEY_CURRENT_USER (HKCU).

Наконец, распространяйте свою .NET DLL с помощью скрипта реестра. Вы можете запустить regedit без прав администратора для регистрации вашей DLL-библиотеки .NET. В ручном режиме из командной строки, используя пакетный файл, или (небольшая) отдельная программа установки может обрабатывать регистрацию.

2

Я зарегистрирован в учетной записи с правами администратора. Но RegAsm.exe все еще говорит, что ему нужны привилегии администратора.

[Из некоторых заметок у меня есть дляWindows 2008 R2. Подтвердите действие в других операционных системах Windows, поддерживающих UAC. Далее предполагается, что вам разрешено вносить изменения в Локальную политику безопасности.]

В конфигурации по умолчанию, Контроль учетных записей параметров (UAC) дают локальный администратор полные привилегии, но ограничить привилегии других членов группы администраторов. Для того, чтобы снять ограничения контроля учетных записей на других членов группы администраторов, выполните следующие действия:

  1. Выберите Start ->Все программы ->Администрирование ->Локальная политика безопасности.
  2. Местные политики ->Опции безопасности.
  3. На правой панели дважды щелкните третью запись снизу, которая читает Контроль учетных записей пользователей: запустите всех администраторов в режиме одобрения администратора.
  4. Нажмите Отключено.
  5. Нажмите OK, чтобы закрыть диалоговое окно и закрыть инструмент настройки локальной политики безопасности.
  6. Перезагрузите компьютер, чтобы выполнить это изменение в настройках UAC.
Смежные вопросы