Следовали ли вы всем инструкциям на этой странице ? Кажется, он охватывает больше параметров реестра, чем вы описали.
Редактировать: Как вы указали, похоже, что эта страница для Vista. Раздражает то, как MSFT отбирает унаследованную информацию и затрудняет ее поиск ...
Одна вещь, которую нужно проверить, это журналы событий - возможно, они содержат подсказку. Может оказаться возможным повысить уровень аудита, чтобы увидеть больше данных, связанных с безопасностью.
У меня нет вашего кода, поэтому я не смог отладить его сам, но я смог подключить отладчик к utilman.exe и получить контроль в тот момент, когда он запускает утилиты на безопасном рабочем столе. Возможно, если вы сделаете это, вы сможете выяснить нарушение безопасности.
- На целевом компьютере:
- Установите средства отладки для Windows.
- Включить доступ по RDP.
- Блокировка экрана.
- Нажмите Win-U, чтобы вызвать диспетчер утилит и оставить его включенным.
- Убедитесь, что ваши символы и источник видны на цели по тому же пути, по которому они были скомпилированы на компьютере разработчика.
- на другой машине:
- RDP на целевой компьютер как пользователь с привилегиями отладки / администратора.
- В сеансе RDP:
- Запустите WinDBG и присоедините к процессу utilman (клавиша F6)
- Если он не входит в отладчик, нажмите ctrl-break.
- Выполните
.childdbg 1
, чтобы убедиться, что ваша утилита загружается в этот экземпляр отладчика при запуске.
- Выполните
g
, чтобы продолжить работу.
- Вернитесь на консоль целевого компьютера (экран входа в систему):
- Запустите вашу утилиту из менеджера утилит. Отладчик (в сеансе RDP) должен прерваться внутри нового процесса, и вы сможете отлаживать его оттуда.
(У меня нет Visual Studio на компьютере, на котором я это пробовал; если у вас есть VStudio на целевой машине, вы, вероятно, можете использовать его вместо WinDBG.)
Если ваша утилита даже не загружается, то Windows выполняет какую-то проверку перед вызовом CreateProcess. Журналы безопасности могут вам помочь.
Редактировать 2 Я пытался использовать утилиту strings , чтобы найти программу, которая генерирует диалоговое окно, но я использую английский WinXP, поэтому у меня нет фактической строки , Я также безуспешно искал «osk.exe» и т. Д.
Если вы можете выяснить, что EXE выводит в этом диалоговом окне (возможно, utilman, возможно, winlogon ...), вы сможете подключиться к нему с помощью отладчика и пройти назад по стеку, чтобы найти проверку на наличие ошибок , Как только у вас будет общая близость неудачной проверки, вы сможете установить точку останова ранее в пути кода, которая должна пробиться в отладчик при следующей попытке запуска. Вы должны быть в состоянии пройти через неудачную проверку оттуда. Для всего этого убедитесь, что у вас есть символы ОС , поскольку это должно значительно облегчить чтение "указателей". Я не знаю, поддерживает ли ваш отладчик сервер символов.