Каковы права доступа по умолчанию для процесса, запущенного с помощью ShellExecuteEx?
-
23-09-2019 - |
Вопрос
Мне нужно выполнить определенные операции над процессом, начатым с ShellExecuteEx
- например, ожидание, дублирование дескрипторов, запрос и установка информации и т. д.Теперь мне интересно, смогу ли я сделать все это на hProcess
член, который возвращается в SHELLEXECUTEINFO
структура, к которой я перехожу ShellExecuteEx
.Кто-нибудь это знает?
Вызывает ли процесс, который вызвал ShellExecuteEx
иметь такие права, как PROCESS_DUP_HANDLE
, SYNCHRONIZE
, PROCESS_SET_INFORMATION
, PROCESS_QUERY_INFORMATION
(и т. д.) по умолчанию при использовании возвращаемого значения hProcess
?
Решение
Я предполагаю, что это то же самое, что вы получаете от CreateProcess, хотя даже в этой документации об этом не говорится (я бы рискнул PROCESS_ALL_ACCESS).В любом случае вы всегда можете использовать GetProcessId() и OpenProcess(), чтобы открыть его с любым доступом, который вам нужен.
Другие советы
Да.Время онлайн, когда вам нужно беспокоиться о правах доступа, заключается в том, что если вы выполняете какую-либо задачу, которая запускает UAC, вам необходимо установить requestedExecutionLevel= 'highestAvailable'