Gibt es eine Windows-Exe, die nichts tut?

47

Gibt es irgendwo eine "noop" -Exe als Teil der Windows-Installation? Ich bereite einige Stapeljobs und geplante Aufgaben vor und möchte aus einigen Gründen auf eine ausführbare Datei verweisen, die nichts bewirkt - dh ohne sichtbares Fenster gestartet und sofort beendet wird.

Existiert eine solche ausführbare Datei in der üblichen Windows-Installation irgendwo? oder wie kann ich nah kommen Ich möchte nicht auf etwas angewiesen sein, das noch nicht in Windows enthalten ist.

DuckMaestro
quelle
2
Aus der Beobachtung: svchost.exeöffnet nichts.
ta.speot.is
@ todda.speot.is sollten Sie das als vollständige Antwort einschließen.
DuckMaestro
2
Musste es eine externe (ausführbare) Datei sein? Wenn nicht, hätte der remBefehl funktionieren können (und je nachdem, wo in der Batch-Datei er verwendet wird, möglicherweise sogar die ::Variante).
Synetech

Antworten:

51

Sie können verwenden rundll32:

  • Kein Konsolenfenster
  • Keine Nebenwirkungen
  • Nur 44 KB
  • Keine Argumente erforderlich
  • Funktioniert auf allen aktuellen Windows-Versionen (XP, Vista, 7) und wahrscheinlich auf allen NT-basierten Systemen.
Andrea
quelle
2
Warum ist es dort?
Nathan
6
@ Nathan Mit den entsprechenden Argumenten kann es eine Funktion innerhalb einer DLL aufrufen
Andrea
Richtig. Stellen Sie sich zum Beispiel ein einfaches print.exeProgramm vor, das einfach die übergebenen Parameter ausgibt. Ohne Argumente würde es nichts tun , aber es Argumente geben etwas tut : > print foobar.
Synetech
@ Andrea dann macht es nichts, wenn keine Argumente angegeben werden. Das ist jedoch nicht genug für seine Anforderungen.
Barlop
3
Außer es ist wahrscheinlich nicht wirklich ein No-Op.
Andy Terra
36

Gibt es irgendwo eine "noop" -Exe als Teil der Windows-Installation?

Bedeutet das konkret ein Programm, das nichts und nichts anderes tun soll? Ja und nein. Nein, Windows enthält standardmäßig keine, es enthält jedoch die Möglichkeit, selbst eine zu erstellen.


Option 1

Führen Sie notepad.exe aus , geben Sie die folgenden Zeilen ein und speichern Sie sie unter C:\ret.scr(vergessen Sie die leere Zeile nicht):

a
ret

rcx
1
n ret.com
w
q

Kompilieren Sie es mit debug.exe an der Eingabeaufforderung ( cmd.exe ) mit folgendem Befehl:

C:\> debug < ret.scr

Sie haben jetzt ein Programm ret.com(in C: \), das in Batch-Dateien verwendet werden kann und absolut nichts bewirkt (außer beenden, wenn dies zählt).

Hinweis : debugIst auf 64-Bit-Systemen nicht enthalten.


Option 2

In Vista und höher ist das .NET-Framework standardmäßig enthalten, sodass Sie auch ein natives Windows-Do-nothing .exemit C # ( 64-Bit-kompatibel ) erstellen können :

Führen Sie notepad.exe aus, und geben Sie die folgenden Zeilen ein, und speichern Sie sie als C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Kompilieren Sie es mit csc.exe an der Eingabeaufforderung ( cmd.exe ) mit dem folgenden Befehl:

C:\> csc ret.cs

Sie haben jetzt ein anderes Programm ret.exe(in C: \), das in Batch-Dateien verwendet werden kann, die nichts anderes tun, als zurückzukehren.

Synetech
quelle
2
Verdammt brillant .. jeder sollte dich für diesen einen positiv stimmen .. Ich wollte schon immer Assemblersprache lernen .. Ich habe Debug noch nie benutzt und dachte, dass es mit DOS abgestorben ist. Ich bin so froh, dass ich über deine Antwort hier gestolpert bin. vielleicht Futter für ein zukünftiges Hobby!
Barlop
12
Für mich csc.exewar es nicht auf meinem Weg, aber es befand sich amC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
AlcubierreDrive
Was ist mit einer EXE-Datei, die aus einem C-Programm kompiliert wurde, das nur eine Hauptmethode hat, wie Ihre csc.exe? Tut das viel viel mehr als das Programm, das Sie in Debug geschrieben haben? Gibt es mit diesem Programm zum Beispiel viel mehr Assemblersprache?
Barlop
1
@barlop, im Allgemeinen ja. Während eine leere mainFunktion so aussieht, als ob sie nichts anderes wäre oder zumindest sein sollteret , wenn Sie ein solches Programm in einem Disassembler (oder sogar einem Hex-Editor) öffnen, werden Sie feststellen, dass es viel, viel mehr ist. In der Regel werden alle Arten von Segmenten (Code, Daten usw.) erstellt, Stapel und Haufen vorbereitet und alle Arten von Funktionen und Zeichenfolgen importiert, auch wenn sie nie tatsächlich verwendet werden.
Synetech
Ich brauchte diese, um eine alte externe Support-Software für ein Installationskit zu ersetzen und die Paketgröße zu reduzieren, wenn diese Software nicht mehr benötigt wird, wie DirectX und VCruntimes. Wenn Sie keinen Compiler haben oder installieren möchten, verwenden Sie die Online-Compiler von tutorialspoint.com/codingground.htm . Laden Sie nach dem Kompilieren das Projekt herunter und die Exe befindet sich im Archiv.
JasonXA
10

In Windows sind keine (mir bekannten) Programme enthalten, die sofort beendet werden, wenn sie ausgeführt werden (zumindest absichtlich).

In Windows Vista und höher gibt es jedoch das Hilfsprogramm timeout.exe . Timeout.exeWartet eine bestimmte Anzahl von Sekunden und beendet dann. Zum Beispiel:

C:\>timeout /t 0 > nul:

Die Einstellung timeout.exe, auf 0 Sekunden zu warten, ist ungefähr so ​​nah wie eine EXE-Datei, die sofort beendet wird.

Andrew Lambert
quelle
3
Um zu tun, was die Operation will, verwenden Sie eine Zeitüberschreitung wie diese "timeout / t 0> nul:" - die den Befehl timeout ohne Ausgabe ausführt und sofort beendet.
Misterjaytee
@misterjaytee gute Idee.
Andrew Lambert
@Tom: Ein Konsolenfenster . Es wird keine Eingabeaufforderung geöffnet, wenn Sie nicht cmd.exespeziell ausführen .
Grawity
@grawity: Der Taskplaner benötigt einen Befehlsprozessor, damit der Befehl ausgeführt werden kann. Das Konsolenfenster wird daher kurz angezeigt.
Tamara Wijsman
@TomWijsman Ich versuche es, aber ich bekomme kein neues Fenster zum Öffnen.
Andrew Lambert
4

Ohne Parameter hat "C: \ Windows \ hh.exe" (Microsoft® HTML Help Executable) keine Auswirkung und ist in jeder Windows-Version enthalten.

ProCompSys
quelle
2

wscript Ohne Argumente wird überhaupt kein Skript ausgeführt und es ist eine "GUI" -ausführbare Datei (öffnet keine Konsole).

Grawity
quelle
2
Wenn ich wscript ohne Argumente ausführe, wird "Windows Script Host Settings" angezeigt. Windows 7 64-Bit. Laufen wscript /bscheint aber zu funktionieren.
DuckMaestro
2

Ich habe es versucht rndll32.exeund hh.exebeide haben dann% ERRORLEVEL% nicht geändert. Dies ist eine Umgebungsvariable, die angibt, ob die letzte ausführbare Datei erfolgreich war. Funktioniert wie der Unix-Returncode.

Mein Befehl noop setzt% ERRORLEVEL% auf Null.

cd %CD%

Ändern Sie einfach das Arbeitsverzeichnis auf das aktuelle.

Neves
quelle
0

Der Befehl echo offführt innerhalb einer Batchdatei (.BAT) keine Aktionen aus. Obwohl es sich nicht um eine ausführbare Datei handelt, handelt es sich um einen Windows-internen Befehl.

obaqueiro
quelle
7
Eigentlich macht es etwas, es schaltet das Echo aus. Das mag wie nichts erscheinen, wenn Sie es ausgeschaltet haben, aber wenn Sie Echo wollen , dann tut es bestimmt etwas.
Synetech
6
und wie rem, es ist keine Windows exe
barlop
0

Kompilieren Sie ein einfaches C ++ - Programm "Hello World", um eine einfache Exe zu erstellen, die sofort beendet wird.
Speichern Sie folgenden Code in einer Textdatei mit einem Namen wie a.cpp:

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

Dann kompilieren sie mit den neuesten C ++ Compiler wie MinGW für Windows 7.
Bei MinGW, führen Sie in Powershell oder Befehl folgende Eingabeaufforderung: g++ path\a.cpp(Unter der Annahme , dass Sie Umwelt PATH - Variable von g eingestellt haben ++ Binärspeicherort oder Sie sind in g ++ Binärverzeichnis dh c : \ mingw \ bin standardmäßig). Nach der Befehlsausführung erhalten Sie eine.exe, die Hello World anzeigt und beendet. Bestätigen Sie mit einem Doppelklick. Das Cmd-Fenster wird sofort angezeigt und ausgeblendet. Der Befehlszeilenzugriff zeigt Hello World an und Sie kehren zur CLI-Eingabeaufforderung zurück.
Dann können Sie diese a.exe in system32 oder irgendwo tief in Windows verschieben. Sie können es sogar auf der Installationsdiskette von Windows bereitstellen.

Apple II
quelle
2
Ich bin mir ziemlich sicher, dass ein C ++ - Compiler nicht in Windows enthalten ist.
Synetech
6
Das Drucken von "Hello World" bringt kaum etwas.
Keith Thompson
@Synetech Compilation ist nur einmal erforderlich, solange die CPU-Architektur identisch ist.
Apple II
1
@ KeithThompson Ich glaube nicht, dass dies den BAT-Algorithmus stören würde, aber wenn es wirklich wichtig ist, ersetzen Sie Hello World durch ein ASCII-Null-Zeichen.
Apple II
5
> Ich glaube nicht, dass dies den BAT-Algorithmus stören würde, aber wenn es wirklich wichtig ist, ersetzen Sie Hello World durch ein ASCII-Null-Zeichen. Oder entfernen Sie einfach den Druckbefehl insgesamt.
Synetech
0

Sie können ein No-Op in C wie folgt schreiben

void main() {

}

und kompilieren Sie es in eine .exe-Datei. Wenn Sie beispielsweise Visual Studio installiert haben, können Sie den Editor öffnen, dieses Snippet einfügen, als noop.c speichern und in der Eingabeaufforderung verwenden, cl noop.cund es wird eine noop.exeDatei im selben Ordner ausgegeben .

Möglicherweise müssen Sie zuerst zu dem Microsoft Visual Studio X.0Ordner in Program Filesnavigieren und vcvarsall.batan der Eingabeaufforderung ausführen .

Andy Terra
quelle
Sie haben den Teil der Frage "Teil einer Windows-Installation" verpasst. Auch das Semikolon ist überflüssig.
Synetech
-1

Obwohl dies nicht der Hauptzweck dieses Tools ist, können Sie die Option / donothing von WuInstall verwenden - Sie können auch einen Rückkehrcode angeben, der zurückgegeben werden soll - siehe http://help.wuinstall.com

hsn
quelle
Das scheint nicht in XP oder 7 enthalten zu sein. Ist es in Serverversionen enthalten?
Synetech