简单的c ++程序无法作为计划任务运行(交互/非交互问题?)

时间:2013-06-05 11:49:33

标签: c++ scheduled-tasks non-interactive

我正在运行Win 7 x64,我用Microsoft Visual c + + c + 2010编写了一个非常简单的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'无法更改numlock状态。)。

从我所看到的,该程序似乎根本不是交互式的。任何人都可以帮我弄清楚为什么会发生这种情况以及如何解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:0)

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