Как безопасно выполнять IPC с повышением прав UAC? ​​

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

у меня есть изменил свое программное обеспечение, чтобы указать, что требуется повышение прав:

enter image description here

В ответ я собираюсь запустить свой исполняемый файл с запросом повышения прав:

SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";
shExecInfo.lpFile = L"myapp.exe";
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_MAXIMIZE;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);

Я собирался сделать, чтобы передать имя именованного канала в командной строке, говоря себе, куда он может подключиться, чтобы получить инструкции о том, что он должен делать:

myapp.exe /uac 6C844671-E262-46DD-939E-47517F105FB6

(Да, используя GUID в качестве имени канала).

Через этот канал i сообщит моему клону с повышенными правами, какая база данных, например:

  • какая база данных сервера должна подключаться к
  • пользователю, он должен сказать, что вносит изменения
  • то, что он должен добавить / отредактировать / удалить

Моя беспокоило то, что кто угодно мог запустить myapp.exe , а затем передать ему всевозможные запросы - вещи, которые мне не нужны. t сделать, потому что i не запустил его, например:

MaliciousProgram.exe :

 ShellExecute("myapp.exe /uac HahaYouDoWhatISayNow")

Я помню, что во время бета-тестирования Longhorn было видео на Channel9 или статья, в которой говорилось о UAC и опасности неправильного выполнения IPC (межпроцессного взаимодействия).

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

Какой он не принял шаблон для выполнения IPC для связи с порожденным процессом с повышенными правами для временных повышенных действий?


Редактировать: Объединенные последователи uac и ipc теги: 53

9
задан Ian Boyd 22 June 2011 в 01:44
поделиться