Я пытался написать приложение Utility Manager и пытаюсь протестировать его на WinXP SP3. Я добавил его в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Utility Manager
, и он хорошо работает при загрузке диспетчера утилит, когда я вошел в систему.
Однако, когда я пытаюсь загрузить его из Диспетчера служебных программ при запуске перед входом в систему (через Window + U) или с заблокированного экрана, появляется сообщение об ошибке (примерно, поскольку это немецкая версия WinXP) «Это приложение не может быть запущенным на безопасном рабочем столе. Обратитесь к системному администратору для получения необходимых разрешений ».
Что мне нужно сделать иначе, чтобы это работало на безопасном рабочем столе?
[b] edit: [/ b] Я последовал совету Дэвида Поупа и попытался отладить utilman.exe (используя OllyDebug так как я больше привык к этому, чем к использованию нового отладчика ..., и попросил его прервать создание процесса). Кажется, что мое приложение вообще не запускается. Поскольку в OllyDebug некоторые функции (например, прерывание при вызове API) были отключены (возможно, потому, что процесс выполняется от имени другого пользователя), я дважды проверил его с помощью Sysinternals Process Monitor. При запуске экранной клавиатуры появляется событие «Процесс создан»; при запуске моего инструмента никаких событий не появляется.
Еще одно примечание: когда я помещаю osk.exe (экранную клавиатуру) в свой новый раздел реестра, он работает нормально (тогда у меня в основном есть две записи на экранной клавиатуре в меню), но если я скопирую osk.exe в osk2. exe и поместите osk2.exe в качестве исполняемого файла, копия onls экранной клавиатуры запускается на незащищенном рабочем столе. Значит, это должна быть какая-то проверка (против имени файла + содержимого) перед вызовом исполняемого файла? Замена magnify.exe моим инструментом (или osk.exe) приведет к тому, что он не будет работать после следующей перезагрузки (при перезапуске utilman ??).
Другими словами: он будет работать только в том случае, если файл называется osk.exe и является экранной клавиатурой, или файл имеет имя magnify.exe и является лупой.
Это также не создает никакой информации в журнале событий.