¿Hay un exe de Windows que no hace nada?

48

¿Hay un "noop" -esque exe en alguna parte como parte de la instalación de Windows? Estoy preparando algunos trabajos por lotes y tareas programadas, y por un par de razones me gustaría hacer referencia a un ejecutable que no hace nada, es decir, se inicia sin una ventana visible y se cierra inmediatamente.

¿Existe tal ejecutable en la instalación habitual de Windows en alguna parte? o como puedo acercarme? No quiero tener que depender de nada que no esté incluido en Windows.

PatoMaestro
fuente
2
Por observación: svchost.exeno abre nada.
ta.speot.is
@ todda.speot.is debe incluir eso como respuesta completa.
DuckMaestro
2
¿Tenía que ser un archivo externo (ejecutable)? De lo contrario, el remcomando podría haber funcionado (y dependiendo de en qué parte del archivo por lotes se esté utilizando, posiblemente incluso la ::variante).
Synetech

Respuestas:

51

Puedes usar rundll32:

  • Sin ventana de consola
  • Sin efectos secundarios
  • Solo 44 KB
  • No se requieren argumentos
  • Funciona en todas las versiones recientes de Windows (XP, Vista, 7), y probablemente en todos los sistemas basados ​​en NT.
Andrea
fuente
2
Entonces, ¿por qué está ahí?
Nathan
66
@Nathan Con los argumentos apropiados, puede llamar a una función dentro de una DLL
Andrea
Correcto. Por ejemplo, imagine un print.exeprograma simple que simplemente imprime los parámetros que se pasan. Sin ningún argumento sería no hacer nada , pero dándole argumentos hace algo : > print foobar.
Synetech
@Andrea entonces no hace nada a menos que no se le den argumentos. Aunque eso no es suficiente según sus requisitos.
barlop
3
Excepto que probablemente no sea realmente un no-op.
Andy Terra
36

¿Hay un "noop" -esque exe en alguna parte como parte de la instalación de Windows?

¿Significa específicamente un programa que está destinado a no hacer nada y nada más? Si y no. No, en el sentido de que Windows no incluye uno de forma predeterminada, pero sí incluye la capacidad de hacer uno usted mismo.


Opción 1

Ejecute notepad.exe , escriba las siguientes líneas y guárdelo como C:\ret.scr(no olvide la línea en blanco):

a
ret

rcx
1
n ret.com
w
q

Compílelo con debug.exe en el símbolo del sistema ( cmd.exe ) con el siguiente comando:

C:\> debug < ret.scr

Ahora tiene un programa ret.com(en C: \) que se puede usar en archivos por lotes que no hace absolutamente nada (bueno, aparte de salir, si eso cuenta).

Nota : debugno está incluido en sistemas de 64 bits.


opcion 2

En Vista y versiones posteriores, el marco .NET se incluye de manera predeterminada, por lo que también puede hacer un Windows nativo que no haga nada .execon C # ( compatible con 64 bits ):

Ejecute notepad.exe y escriba las siguientes líneas, guardándolo como C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Compílelo con csc.exe en el símbolo del sistema ( cmd.exe ) con el siguiente comando:

C:\> csc ret.cs

Ahora tiene otro programa ret.exe(en C: \) que se puede usar en archivos por lotes que no hace más que devolver.

Synetech
fuente
2
Maldita sea brillante ... todos deberían votarte por eso ... Siempre quise aprender lenguaje ensamblador ... Nunca usé depuración y pensé que murió con DOS. Me alegro de haber tropezado con tu respuesta aquí. ¡Quizás forraje para un futuro pasatiempo!
barlop
12
Para mí, csc.exeno estaba en mi camino, pero se encuentra enC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
Métrica de Alcubierre
¿Qué pasa con un EXE que se compila de un programa en C que solo tiene un método principal, como su csc.exe? ¿Está haciendo mucho más que el programa que escribió en la depuración? Por ejemplo, ¿hay mucho más lenguaje ensamblador con ese programa?
barlop
1
@barlop, generalmente sí. Si bien una mainfunción vacía parece que sería, o al menos no debería ser más que una ret, si abre un programa de este tipo en un desensamblador (o incluso un editor hexadecimal), verá que es mucho, mucho más que eso. Por lo general, configurará todo tipo de segmentos (código, datos, etc.), preparará pilas y montones, sin mencionar que importará todo tipo de funciones y cadenas, incluso si en realidad nunca las usa.
Synetech
Necesitaba este para reemplazar un viejo software de soporte externo para un kit de instalación, reduciendo el tamaño del paquete, donde ese software ya no es necesario, como DirectX y VCruntimes. Además, si no tiene o no desea instalar ningún compilador, use compiladores en línea de tutorialspoint.com/codingground.htm , después de la compilación, descargue el proyecto y tendrá el archivo exe dentro del archivo.
JasonXA
10

No hay ningún programa incluido con Windows (que yo sepa) que salga inmediatamente cuando se ejecute (al menos a propósito).

En Windows Vista y versiones posteriores, sin embargo, existe la utilidad timeout.exe . Timeout.exeesperará un número específico de segundos y luego saldrá. Por ejemplo:

C:\>timeout /t 0 > nul:

La configuración timeout.exepara esperar 0 segundos es lo más cerca que estarás de un EXE que sale inmediatamente.

Andrew Lambert
fuente
3
Para hacer lo que quiere el Op, use el tiempo de espera como este "timeout / t 0> nul:", que ejecutará el comando de tiempo de espera sin ningún resultado y se cerrará inmediatamente.
misterjaytee
@misterjaytee buena idea.
Andrew Lambert
@Tom: una ventana de consola . No abrirá un símbolo del sistema a menos que se ejecute cmd.exeespecíficamente.
Grawity
@grawity: el Programador de tareas necesita un procesador de comandos para que se ejecute el comando, por lo tanto, la ventana de la consola se mostrará brevemente.
Tamara Wijsman
@TomWijsman Lo intenté, no puedo abrir ninguna ventana nueva.
Andrew Lambert
4

Sin los parámetros "C: \ Windows \ hh.exe" (ejecutable de la Ayuda HTML de Microsoft®) no hace nada y supongo que está incluido en cualquier versión de Windows.

ProCompSys
fuente
2

wscript sin argumentos no ejecuta ningún script y es un ejecutable "GUI" (no abre una consola).

Gravedad
fuente
2
Cuando ejecuto wscript sin argumentos, aparece una "Configuración de Windows Script Host" que aparece. Windows 7 de 64 bits. Sin wscript /bembargo, correr parece funcionar.
DuckMaestro
2

Lo intenté rndll32.exey hh.exeambos no alteraron el% ERRORLEVEL%. Es una variable de entorno que dice si el último ejecutable fue exitoso. Funciona como el código de retorno de Unix.

Mi comando noop a continuación establecerá% ERRORLEVEL% en cero es:

cd %CD%

Simplemente cambiando el directorio de trabajo al actual.

neves
fuente
0

el comando echo offno hace nada dentro de un archivo por lotes (.BAT). Aunque no es un ejecutable, es un comando interno de Windows.

obaqueiro
fuente
77
En realidad hace algo, apaga el eco. Puede parecer que no hay nada si lo tienes activado, pero si quieres hacer eco, entonces ciertamente hace algo.
Synetech
66
y como rem, no es un exe de Windows
barlop
0

Compile un programa C ++ simple "Hello World" para crear un exe simple que salga inmediatamente.
Guarde el siguiente código en un archivo de texto con algún nombre como a.cpp:

#include<iostream>
int main()
{ std::cout<<"Hello World";
return 0;
}

Luego, compílelo con el ÚLTIMO compilador de C ++ como MinGW para Windows 7.
En el caso de MinGW, ejecute el siguiente comando en PowerShell o Símbolo del sistema: g++ path\a.cpp(Suponiendo que haya establecido la variable de RUTA ambiental de la ubicación binaria de g ++ o que esté en el directorio binario de g ++, es decir, c : \ mingw \ bin por defecto). Después de la ejecución del comando, obtendrá a.exe que mostrará Hello World y saldrá. Verifique haciendo doble clic ... la ventana cmd aparecerá y desaparecerá de inmediato. El acceso a la línea de comandos mostrará Hello World y lo regresará a la solicitud de CLI.
Luego, puede mover este a.exe en system32 o en cualquier lugar dentro de Windows. Incluso puede implementarlo en el disco de instalación de Windows.

Manzana II
fuente
2
Estoy bastante seguro de que un compilador de C ++ no está incluido con Windows.
Synetech
66
Imprimir "Hello World" no hace nada.
Keith Thompson
La compilación de @Synetech se requiere solo una vez, siempre y cuando la arquitectura de la CPU sea la misma ..
Apple II
1
@KeithThompson No creo que interfiera con el algoritmo BAT, pero si realmente importa, reemplace Hello World con un carácter nulo ASCII ...
Apple II
55
> No creo que interfiera con el algoritmo BAT, pero si realmente importa, reemplace Hello World con un carácter nulo ASCII O simplemente elimine el comando de impresión por completo.
Synetech
0

Puedes escribir un no-op en C así

void main() {

}

y compilarlo en un archivo .exe. Por ejemplo, si tiene instalado Visual Studio, puede abrir el bloc de notas, pegar ese fragmento, guardarlo como noop.c y, en el símbolo del sistema, utilizar cl noop.cy generará un noop.exearchivo en la misma carpeta.

Es posible que primero tenga que buscar la Microsoft Visual Studio X.0carpeta Program Filesy ejecutarla vcvarsall.batdesde el símbolo del sistema.

Andy Terra
fuente
Se perdió la parte de la pregunta que decía "parte de una instalación de Windows". Además, el punto y coma es redundante.
Synetech
-1

Aunque no es el objetivo principal de esta herramienta, puede usar la opción / donothing de WuInstall ; también puede especificar un código de retorno que debe devolverse; consulte http://help.wuinstall.com

hsn
fuente
Eso no parece estar incluido con XP o 7. ¿Está incluido con las versiones del servidor?
Synetech