Ответ 1
highestAvailable
будет повышаться, если текущий пользователь является администратором. Это соответствует тому, что вы наблюдали. Когда стандартный пользователь запускает этот процесс, диалог UAC не отображается, и процесс выполняется со стандартным токеном. Когда пользователь-администратор выполняет, отображается диалог согласия UAC, и процесс затем будет выполняться с повышением.
Если ваша программа требует прав администратора для работы, вам необходимо использовать requireAdministrator
. Когда стандартный пользователь запускает такой процесс, отображается диалоговое окно UAC с избыточным плечом. Это дает пользователю возможность попросить администратора предоставить свои учетные данные.
Вы должны использовать highestAvailable
, если ваша программа может работать с ограниченной функциональностью, если пользователь не может поднять. Это то, что подразумевается под смешанным режимом в теме MSDN, связанной вашим вопросом.