Некоторое время я баловался работой с UAC и обнаружил несколько вещей:
HKLM or HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
или же HKLM or HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
в 64-битных машинах.Исходя из Linux, я понятия не имел о всех этих проблемах, связанных с правами администратора. Если кто-то может перечислить сценарии, которые абсолютно необходимо привилегии администратора, это было бы очень полезно!
Я спрашиваю об этом, потому что при разработке какого-либо приложения я продолжаю сталкиваться с несколькими проблемами во время реализации, в основном потому, что моему приложению требуются права администратора, а это не так.
Если бы я знал во время разработки все возможные сценарии, требующие прав администратора, я мог бы спроектировать общий сервис для всех моих приложений, который бы отвечал за все задачи администратора (я думаю, что сервисы — это способ Windows делать подобные вещи).
На самом деле нет списка сценариев или вызовов функций API, которые требуют повышения прав. Вероятно, лучшим вариантом будет сосредоточиться на том, какие вызовы API требуют повышения прав. Причина этого заключается в том, что это может потребоваться только в том случае, если в функцию передаются определенные значения. Например CreateFile
может создать файл в вашем домашнем каталоге без повышения прав, но требует его для создания файла в C: \ Windows. Если каталог предоставляется с помощью пользовательского ввода, единственный способ узнать, требуется ли повышение прав, — это проверить код ошибки при сбое вызова. Если требуется повышение, функция установит статус ошибки на ERROR_ACCESS_DENIED
и вернуть значение, указывающее сбой.
Других решений пока нет …