我尝试编写实用程序管理器应用程序,并尝试在 WinXP SP3 上对其进行测试。我将它添加到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Accessibility\Utility Manager
,并且在我登录时加载实用程序管理器时效果很好。
但是,当我在登录前(通过 Window+U)或从锁定屏幕尝试在启动时从实用程序管理器加载它时,会出现一条错误消息,说(大约,因为它是 WinXP 的德语版本)“此应用程序不能在安全桌面上执行。请联系您的系统管理员以获取所需的权限”。
我必须做些什么不同的事情才能在安全桌面上进行这项工作?
[b] 编辑:[/b] 我听从 David Pope 的建议并尝试调试 utilman.exe(使用OllyDebug,因为我比使用新的调试器更习惯...,并要求它中断进程创建)。好像我的应用程序根本没有启动。由于 OllyDebug 似乎禁用了某些功能(例如中断 API 调用)(可能是因为该进程以不同的用户身份运行),我使用 Sysinternals Process Monitor 仔细检查了它。启动屏幕键盘时,会出现“进程创建”事件;启动我的工具时,没有出现任何事件。
另一个注意事项:当我将 osk.exe(屏幕键盘)放入我的新注册表项时,它可以正常工作(我基本上在菜单中有两个屏幕键盘条目),但是如果我将 osk.exe 复制到 osk2。 exe 并将 osk2.exe 作为可执行文件,屏幕键盘上的副本将在非安全桌面上启动。所以在调用可执行文件之前必须是某种验证(针对文件名+内容)?用我的工具(或 osk.exe)替换 magnify.exe 将使该工具在下一次重新启动后无法工作(当 utilman 重新启动时??)。
换句话说:只有文件名为 osk.exe 并且是屏幕键盘或文件名为 magnify.exe 并且是放大镜时,它才会起作用。
这也不会在事件日志中创建任何信息。