【问题标题】:How to run a VB6 app from a scheduled task without users being able to run it如何在用户无法运行的情况下从计划任务运行 VB6 应用程序
【发布时间】:2017-08-11 13:02:46
【问题描述】:

我们有一个旧版 VB6 应用程序,可以自动通过电子邮件发送报告。它从服务器上的计划任务运行。有时用户会运行 exe - 它位于我们无法将其锁定的文件夹中,并且由于过于复杂而无法进入此处的原因,它必须保留在该文件夹中。有没有办法阻止用户运行 exe,同时仍然让它从计划任务中运行?我可以修改 exe 的源代码,所以如果有人可以帮助我弄清楚如何,这是一个选择。

【问题讨论】:

  • 与编程无关。与SuperUser.com 更相关?
  • 只分配不允许随机用户执行的程序权限。
  • Bob77,这就是我想做的,但我不知道怎么做。您能否指出有关分配这些权限的信息,以及我必须将它们设置为什么才能运行计划任务但随机用户无法通过双击它(或通过任何其他方式)运行该 exe?
  • C-Pound Guru,我认为可以通过在源代码中添加一些东西来限制谁可以运行它来解决这个问题,这就是我在这里提出问题的原因。

标签: vb6 scheduled-tasks


【解决方案1】:

我将调用您现有的应用 AppChild 和一个新的 VB6(或其他程序语言)程序 AppParent。

修改 AppChild 以在 Sub Main() 或 Form_Load() 事件中加载的第一个表单处测试命令行参数。如果命令行参数不存在,AppChild 将终止。

AppParent 将位于其他用户无法访问的位置。计划任务运行 AppParent,它运行 AppChild 并传递所需的命令行参数。这可以通过传递计算的哈希值并在需要时在 AppChild 中对其进行解码来得到一定程度的保护。

或者,如果用户无权访问计划任务,您可以只运行 AppChild ,从计划任务传递所需的参数。如果用户确实有权访问计划任务,这将不起作用,因为他们可以看到传递的参数并创建传递所需参数的快捷方式。

您没有说明服务器正在运行哪个操作系统,但如果您尝试在没有登录用户的情况下运行计划任务,您可能会遇到使用网络资源的问题。任务管理器进行了重大更新以处理安全问题,以防止黑客在没有登录用户的情况下运行任务。本质上,网络资源,例如除非用户登录,否则电子邮件不可用。 https://technet.microsoft.com/en-us/library/cc722152(v=ws.11).aspx

我发现解决该问题的唯一方法是运行一台始终登录具有正确权限的用户的机器。

【讨论】:

  • thx1138v2 - 它运行的是 Windows Server 2003,我们可以在没有登录用户的情况下运行计划任务。我将尝试从计划任务中传递命令行参数,我认为这将是解决方案。
【解决方案2】:

您确定不能锁定用户吗? 您可以限制对该文件夹的访问,使用户无法访问它,并将计划任务设置为使用有权访问该文件夹的帐户。

【讨论】:

  • 虽然这很理想,但我被告知我们不能限制对该文件夹的访问。我想知道是否有办法为任务计划程序提供用户名和密码,并将 VB6 应用程序编码为只为该帐户运行。
  • 您也许可以对 Environment.UserName 属性做一些事情,该属性应该告诉您运行环境的人是谁(如果它检查谁已登录或该过程使用了哪些凭据,则不是 shure )。我将使用仅将该数据记录到文件的控制台应用程序进行测试。当您设置计划任务时,即使用户未登录您设置要使用的用户凭据,也可以运行一个选项。将其设置为运行 ecery 5 分钟,然后手动触发几次。这应该会给你足够的输入,看看你是否使用它。
【解决方案3】:

虽然不能将用户锁定在文件夹之外(也许报告最终会在那里?),但在 Windows 中,您可以基于每个文件设置权限。创建一个具有完全权限的新用户(与您的用户相同)。安排 VB6 应用程序与该用户一起运行。删除普通用户查看应用程序的权限。为此,您只需更改 VB6 应用程序的权限即可。

【讨论】:

  • VB6 不是 VBA。
猜你喜欢
  • 2021-09-17
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 2011-03-10
  • 2021-01-21
  • 2023-01-30
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多