У меня есть части моей программы, которые требуют административного доступа (настройки, которые влияют на всех пользователей, хранятся в HKLM и ограничены административным доступом).
Я изменил свое программное обеспечение, чтобы указать, что требуется повышение прав:
В ответ я собираюсь запустить свой исполняемый файл, запрашивая повышение прав:
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как имя канала).
Через этот канал я бы сказал моему повышенному клону, какую базу данных, например:
- к какой базе данных сервера она должна подключаться
- пользователь должен сказать, что он вносит изменения
- вещь, которую он должен добавить / отредактировать / удалить
Тогда меня беспокоило, что кто-нибудь может запустить myapp.exe
, а затем прокормитьэто все виды запросов -вещи, которые я не хочу делать, потому что i не запустил его, например:
MaliciousProgram.exe :
ShellExecute("myapp.exe /uac HahaYouDoWhatISayNow")
я помню, что во время бета-тестирования Longhorn было видео на канале 9 или статья, рассказывающая об UAC и об опасностях неправильного выполнения IPC (межпроцессное взаимодействие).
я не хочу изобретать зановоколесо, делая ошибки безопасности, которые уже были решены.Но я не могу найти никакого существующего руководства по " правильному " способу выполнения IPC с повышением UAC.
Что он не принял шаблон для выполнения IPC для связи с порожденным процессом с повышенными правами для временного повышения правдействия?
Редактировать: Объединенные подписчики тегов uac
и ipc
: 53