1

我正在运行 Win 7 x64,并使用 Microsoft Visual c++ 2010 express 编写了一个非常简单的 c++ 程序,作为任务调度程序中的任务运行。这是程序代码(没有资源文件或头文件):

#include <windows.h>

int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show)
{
      // Simulate numlock key press
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Simulate numlock key release
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      return 0;
}

我希望任务以 SYSTEM 帐户运行,而不依赖于任何用户凭据或他们是否登录。但是,我无法使其作为任务调度程序中的任务成功运行。在做了一些研究之后,我现在怀疑以 SYSTEM 运行的任务不能交互的事实是该程序无法正常工作的原因(通过使用 PsExec 工具,我可以确认 'PsExec -s -i my_program.exe ' 有效,而 'PsExec -s my_program.exe' 无法更改数字锁定状态。)。

据我所知,该程序似乎根本不是交互式的。谁能帮我弄清楚为什么会发生这种情况以及如何解决?提前致谢

4

1 回答 1

0

如果我可以回答我自己的问题,这似乎是 Windows 的某种安全措施,以避免从用户桌面外部接收键盘/鼠标事件(参见此处)。

于 2013-06-06T10:42:48.860 回答