Когда приложение абсолютно необходимо запускать от имени администратора?

Некоторое время я баловался работой с UAC и обнаружил несколько вещей:

  1. При включенном UAC программа в папке «Автозагрузка», которую необходимо запустить от имени администратора (например, с помощью встроенного манифеста), не может быть запущена в соответствии с этот поток переполнения стека.
  2. Еще один метод запуска программы при запуске — создать ключ, содержащий путь к этому приложению в: HKLM or HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run или же HKLM or HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run в 64-битных машинах.
  3. Еще один метод использует планировщик задач, устанавливающий Запуск с высшими привилегиями вариант. Это единственный метод, который обходит проблему, указанную в пункте 1.

Исходя из Linux, я понятия не имел о всех этих проблемах, связанных с правами администратора. Если кто-то может перечислить сценарии, которые абсолютно необходимо привилегии администратора, это было бы очень полезно!

Я спрашиваю об этом, потому что при разработке какого-либо приложения я продолжаю сталкиваться с несколькими проблемами во время реализации, в основном потому, что моему приложению требуются права администратора, а это не так.

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

0

Решение

На самом деле нет списка сценариев или вызовов функций API, которые требуют повышения прав. Вероятно, лучшим вариантом будет сосредоточиться на том, какие вызовы API требуют повышения прав. Причина этого заключается в том, что это может потребоваться только в том случае, если в функцию передаются определенные значения. Например CreateFile может создать файл в вашем домашнем каталоге без повышения прав, но требует его для создания файла в C: \ Windows. Если каталог предоставляется с помощью пользовательского ввода, единственный способ узнать, требуется ли повышение прав, — это проверить код ошибки при сбое вызова. Если требуется повышение, функция установит статус ошибки на ERROR_ACCESS_DENIED и вернуть значение, указывающее сбой.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]