任务计划程序WorkItem未运行

时间:2014-10-23 18:41:57

标签: windows winapi visual-c++ scheduled-tasks

我有一个非常具体的问题需要修复。主要问题是我不知道如何在谷歌上正确搜索我的问题的残余。因此,我将向StackOverflow寻求建议,希望有人能帮助我。

摘要

所以我正在为我正在开始的公司编写一个符合PCI标准的应用程序。该应用程序涉及IPC(进程间通信)和两个监视主应用程序状态的“看门狗”应用程序。其中一个“看门狗”应用程序是更新程序(向服务器发送HTTP请求以查找应用程序的更新)。

原来如此!如果应用程序是最新的,我用来检查服务器的方法是使用WinInet库和InternetOpen()发送请求。然后读取页面的响应并使用GetCookie()将响应存储在缓冲区中。然后它应相应地解析响应。

如果响应显示我的应用程序的当前版本低于服务器上的版本。然后,它会告诉客户(用户)他们的应用程序已过期,并询问他们是否要更新软件。如果他们选择更新软件,它将从互联网执行下载并执行,并在用户的PC上启动更新安装程序。

问题

不幸的是,当“未经授权”的应用程序向传出URL发送HTTP请求时,Windows非常“安全”,更不用说从服务器下载某些内容然后在用户PC上执行它。

我对此问题的结论是将监视程序添加到任务计划程序。这样,在运行主应用程序之后,它将生成看门狗程序并检查它们是否以NTAUTHORITY权限(由任务计划程序授予)运行。

在实现创建任务的代码并将其指向监视程序的位置,命名它,编写描述和所有内容之后。我执行了这个程序。它运行没有错,虽然在这里真正的问题:

1)程序执行

2)Spawns看门狗节目

3)看门狗程序检查新版本

4)找到版本

5)安装程序已下载,执行...但

6)安装程序未出现在屏幕上!


当我运行“Process Hacker”应用程序来监控所有流程操作时。我可以看到新安装程序是下载&执行。它像看门狗程序一样以NTAUTHORITY / SYSTEM运行,但它不会出现在系统上。

我确保在我的代码中,窗口的状态设置为SW_SHOWNORMAL而不是SW_HIDE。我还确保所有标志都相应地设置。虽然它没有出现在屏幕上!

当我运行应用程序而不将其作为我的用户添加到任务计划程序而没有NTAUTHORITY / SYSTEM状态并且只是常规用户状态时。它执行(显然因为我已经以管理员身份运行) - 一切正常。但是在将其添加到任务计划程序并使其以SYSTEM级别权限运行之后。窗口不会在视觉上出现在屏幕上。为什么?

我非常感谢能够帮助我解决这个问题的人。感谢您!

编辑1

任何人都可以帮助我了解此用户如何在注册表中应用他的修复程序?通过阅读这个问题,我可以解释一下他和我有同样的问题。

App is invisible if started from Task Scheduler without any user logged in

无论如何,我试图使用Gisley给我的建议来以交互模式运行应用程序。可能会尝试尝试一下。仍在寻找更多的答案,但在此期间我将不会这样做。

编辑2

我尝试设置INTERACTIVE FLAG,但遗憾的是没有效果。

请允许我强调我的问题:

例如,我编写了一个带有消息框并将其放入循环的程序。

代表

消息框

获取当前的pid

在任务计划程序中制作流程

使用NTAUTHORITY / SYSTEM

生成新进程作为任务调度程序proc

kill last proc pid

结束

然后当我执行它时:

我收到了消息框。然后在使用NTAUTHORITY / SYSTEM打开新进程后,消息框不再出现。

例如,如果我打开一个计算器。

系统(“cmd.exe start / c calc.exe”)

程序运行...打开计算器 程序获得NTAUTHORITY / SYSTEM状态 在下一个循环中,它执行calc.exe 我在我的任务管理器中看到它,但它没有出现在屏幕上

我希望上述内容有助于强调我的问题的核心。我没有看到任务调度程序进程id使用NTAUTHORITY / SYSTEM权限打开进程...我没有看到它在我的屏幕上执行的procs,虽然我在任务管理器中看到它们处理黑客,他们也使用NTAUTHORITY / SYSTEM权限运行。

1 个答案:

答案 0 :(得分:0)

在黑暗中拍摄 - 尝试以交互模式运行任务,但您需要让用户登录。

https://superuser.com/questions/616206/run-interactive-task-even-if-user-is-not-logged-on-windows

或者,或者另外,将参数传递给安装程序,以便以静默方式安装。

Silent installation of a MSI package