Привет!
Используя классы из ATL для работы с токенами, делаю следующее:
CTokenGroups DisabledSids, RestrictedSids;
CTokenPrivileges DelPrivs;
CurToken.CreateRestrictedToken(&RestToken, DisabledSids, RestrictedSids, DelPrivs);
CurToken это токен моего процесса.
Потом создаю процесс с помощью CreateProcessAsUser. Процесс успешно создается. Однако, если таким образом запустить cmd.exe, то возникают следующие две особенности:
1. набираем в cmd команду calc. (запуск калькулятора). cmd говорит, что файла нет. Если же набрать эту команду в cmd, запущенном обычным способом, то все нормально.
2. Переходим в каталог c:\windows\system32 и даем эту команду там. Ошибки не возникает, но и калькулятор не появляется. Process Explorer показывает, что процесс calc.exe запущен.
В чем может быть дело?