Scripting 在不丢失标准错误/输出流的情况下隐藏控制台

Scripting 在不丢失标准错误/输出流的情况下隐藏控制台,scripting,batch-file,cmd,Scripting,Batch File,Cmd,我的问题类似于,但有一个额外的限制 如果在vbscript中使用,将无法访问进程的标准输入/错误/输出流。允许您访问标准流,但不能隐藏窗口。你怎么能既有蛋糕(隐藏窗口)又吃蛋糕(直接访问控制台流) 我目前在考虑C++可执行文件,它创建了一个新的Windows站和桌面,(参见)并在新的桌面中运行一个指定的脚本(我还不是窗口站和桌面上的专家,所以这个想法可能会被延迟)。 这个想法大致基于的特性,如果禁用该特性,将在不可见的桌面上运行Condor作业。我还没弄清楚这是否需要更高的特权 这种方法的折衷之

我的问题类似于,但有一个额外的限制

如果在vbscript中使用,将无法访问进程的标准输入/错误/输出流。允许您访问标准流,但不能隐藏窗口。你怎么能既有蛋糕(隐藏窗口)又吃蛋糕(直接访问控制台流)

我目前在考虑C++可执行文件,它创建了一个新的Windows站和桌面,(参见)并在新的桌面中运行一个指定的脚本(我还不是窗口站和桌面上的专家,所以这个想法可能会被延迟)。 这个想法大致基于的特性,如果禁用该特性,将在不可见的桌面上运行Condor作业。我还没弄清楚这是否需要更高的特权

这种方法的折衷之处在于,如果脚本阻塞了用户输入,它可能会消失在边缘

有人有其他想法吗?还是对上述方法的反馈

编辑:


此外,我们脚本的目的是设置用户环境,因此作为另一个用户运行或作为系统计划的任务运行实际上不是一个选项(除非有我不知道的聪明技巧)。

我只测试了一点,所以YMMV

将以下代码放入.vbs文件(我称之为我的HideWindow.vbs):

从批处理文件或命令行调用它,如下所示:

CSCRIPT HideWindow.vbs

您在
test.cmd中输入的任何内容都将在不显示窗口的情况下运行。这可以通过几种方式进行改进,特别是通过参数化由
oProcess.Create
调用的程序,我对上面的VBScript片段没有任何运气-窗口仍然会弹出。然而,我确实找到了一个名为的工具,它看起来和我需要的差不多。不幸的是,它不是开源的,也不是免费的商业用途。

Cygwin()附带了一个名为run.exe的实用程序,它可以执行您要求的通用进程。您可以使用它来结束对cscript的调用。Cygwin对于商业或个人使用来说都是免费的。

你可以使用,这是我写的一个免费工具,它为CreateProcess Windows API调用提供了一个命令行界面。GUI版本本身没有控制台,您可以使用它在隐藏窗口中启动shell脚本(批处理文件)

账单

CSCRIPT HideWindow.vbs