Windows安装过程中某处是否存在“ noop”式exe?我正在准备一些批处理作业和计划的任务,出于几个原因,我想引用一个不执行任何操作的可执行文件-即在没有可见窗口的情况下启动并立即退出。
在任何地方的常规Windows安装中都存在这样的可执行文件吗?或我怎么能接近?我不想依赖于Windows中尚未包含的任何内容。
rem
命令可能已经起作用(并且取决于在批处理文件中使用它的位置,甚至可能是::
变体)。
Windows安装过程中某处是否存在“ noop”式exe?我正在准备一些批处理作业和计划的任务,出于几个原因,我想引用一个不执行任何操作的可执行文件-即在没有可见窗口的情况下启动并立即退出。
在任何地方的常规Windows安装中都存在这样的可执行文件吗?或我怎么能接近?我不想依赖于Windows中尚未包含的任何内容。
rem
命令可能已经起作用(并且取决于在批处理文件中使用它的位置,甚至可能是::
变体)。
Answers:
您可以使用rundll32
:
print.exe
程序,简单地打印出它传递的参数。没有任何参数的话什么都不做,但是给它参数可以做一些事情:> print foobar
。
Windows安装过程中某处是否存在“ noop”式exe?
具体来说,这是什么意思什么都不做的程序?是的,没有。否,因为Windows默认情况下不包括一个,但它确实包含可以自己制作的功能。
运行notepad.exe,键入以下行,并将其另存为C:\ret.scr
(不要忘记空白行):
a
ret
rcx
1
n ret.com
w
q
使用以下命令在命令提示符(cmd.exe)上使用debug.exe对其进行编译:
C:\> debug < ret.scr
现在,您有了一个程序ret.com
(在C:\中),该程序可以在批处理文件中使用,该程序绝对不执行任何操作(如果可以的话,除了退出以外)。
注意:debug
在64位系统上不包括。
在Vista及更高版本中,默认情况下包括.NET框架,因此您也可以.exe
使用C#(兼容64位)制作Windows本机内容:
运行notepad.exe并键入以下行,并将其另存为C:\ret.cs
:
class rte
{
static void Main() {
}
}
使用以下命令在命令提示符(cmd.exe)上使用csc.exe进行编译:
C:\> csc ret.cs
现在,您有了另一个程序ret.exe
(在C:\中),该程序可以在批处理文件中使用,该程序仅返回即可。
csc.exe
并不是我走的路,而是位于C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
main
看似一个空函数,或者至少应该只是一个空函数ret
,但是如果您在反汇编程序(甚至是十六进制编辑器)中打开这样的程序,您会发现它远不止于此。它通常会设置各种段(代码,数据等),准备堆栈和堆,更不用说导入各种函数和字符串,即使从未真正使用过它们也是如此。
Windows附带的任何程序(据我所知)都不会在执行时立即退出(至少是故意的)。
但是,在Windows Vista和更高版本中,有timeout.exe实用程序。Timeout.exe
将等待指定的秒数,然后退出。例如:
C:\>timeout /t 0 > nul:
设置timeout.exe
等待0秒与您将到达立即退出的EXE差不多。
cmd.exe
专门运行,否则它不会打开命令提示符。
如果没有参数“ C:\ Windows \ hh.exe”(Microsoft®HTML Help Executable),则不会执行任何操作,并且我猜想它包含在任何Windows版本中。
wscript
不带参数的脚本根本不运行任何脚本,并且是“ GUI”可执行文件(不会打开控制台)。
wscript /b
似乎可以工作。
编译一个简单的“ Hello World” C ++程序以创建一个将立即退出的简单exe。
将以下代码保存在名称为a.cpp之类的文本文件中:
#include<iostream>
int main()
{ std::cout<<"Hello World";
return 0;
}
然后,使用最新的C ++编译器(如Windows 7的MinGW)对其进行编译。
对于MinGW,请在PowerShell或命令提示符中执行以下命令:(g++ path\a.cpp
假设您已设置g ++二进制位置的环境PATH变量,或者您位于g ++二进制目录中,即c :\ mingw \ bin默认情况下)。执行命令后,您将获得一个.exe,它将显示Hello World并退出。双击验证... cmd窗口将出现并立即消失。命令行访问将显示Hello World,并使您返回CLI提示符。
然后,您可以在system32或Windows内部深处的任何位置移动此a.exe。您甚至可以在Windows的安装磁盘中推出它。
您可以像这样用C编写无操作
void main() {
}
并将其编译为.exe文件。例如,如果安装了Visual Studio,则可以打开记事本,粘贴该代码段,将其另存为noop.c并在命令提示符下使用cl noop.c
,它将noop.exe
在同一文件夹中输出文件。
您可能不一定必须先浏览到该Microsoft Visual Studio X.0
文件夹Program Files
并vcvarsall.bat
从命令提示符下运行。
Altough不是这个工具的主要目的,你可以使用的/ donothing选项WuInstall -你还可以指定应返回的返回码-看http://help.wuinstall.com
svchost.exe
没有打开任何东西。