UIAccess и Elevation без использования безопасного рабочего стола

Я пишу программное обеспечение для удаленного рабочего стола, похожее на VNC, и хотел получать запросы UAC, используя функции, предоставляемые разрешениями UIAccess и политиками безопасности.

Теория:

В соответствии с приведенными ниже блогами MSDN необходимо установить для свойства "Настройки безопасности \ Локальные политики \ Параметры безопасности \ Разрешить приложениям UIAccess запрос на повышение прав без использования безопасного рабочего стола" значение "Включено", чтобы приложения с разрешением "UIAccess" могли сделайте так, чтобы "приглашение UAC" отображалось на интерактивном рабочем столе пользователя вместо безопасного рабочего стола.

https://blogs.msdn.microsoft.com/cjacks/2009/01/08/helpdesk-elevation-on-windows-vista-and-windows-7/

https://blogs.msdn.microsoft.com/cjacks/2009/10/15/using-the-uiaccess-attribute-of-requestedexecutionlevel-to-improve-applications-providing-remote-control-of-the-desktop/

https://blogs.msdn.microsoft.com/asklar/2012/03/14/remote-assistance-and-uac-prompts/

Замечание: я написал программу с приведенным ниже кодом.

static void Main()
{
    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p.StartInfo.UseShellExecute = true;
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Verb = "runas";
    p.Start();
}

Затем я добавил следующее в app.manifest

<requestedExecutionLevel  level="asInvoker" uiAccess="true" />

Затем я сам подписал заявку в соответствии с инструкциями форума MSDN.

Затем я вручную скопировал программу в подпапку в папке Program Files (x86).

Затем я включил политику безопасности "Разрешить приложениям UIAccess запрашивать повышение прав без использования безопасного рабочего стола".

Когда я запустил программу (в той же системе, где я генерировал сертификат), я ожидал, что приглашение UAC будет отображаться на интерактивном рабочем столе пользователя. Но он все еще работает на "безопасном рабочем столе", даже несмотря на то, что вызываемое приложение имеет разрешение UIAccess.

Что могло пойти не так?

1 ответ

В uiAccessособенность чрезвычайно опасна. Из-за этого Windows будет учитывать это только в том случае, если:

  • приложение имеет цифровую подпись, и
  • находится в одном из надежных мест, например, C:\Program Files
Другие вопросы по тегам