Y at-il un Windows exe qui ne fait rien?


48

Existe-t-il un fichier «noop» -esque quelque part dans l’installation de Windows? Je prépare des travaux par lots et des tâches planifiées. Pour une ou deux raisons, j'aimerais citer un exécutable qui ne fait rien, c'est-à-dire qu'il démarre sans fenêtre visible et se ferme immédiatement.

Un tel exécutable existe-t-il n'importe où dans l'installation Windows habituelle? ou comment puis-je m'approcher? Je ne veux pas dépendre de quelque chose qui n'est pas déjà inclus dans Windows.


2
De l'observation: svchost.exen'ouvre rien.
ta.speot.is

@ todda.speot.is, vous devriez l'inclure comme réponse complète.
DuckMaestro

2
Devait-il s'agir d'un fichier externe (exécutable)? Sinon, la remcommande aurait pu fonctionner (et selon l'endroit où elle est utilisée dans le fichier de commandes, éventuellement même la ::variante).
Synetech

Réponses:


51

Vous pouvez utiliser rundll32:

  • Pas de fenêtre de console
  • Pas d'effets secondaires
  • Seulement 44 Ko
  • Aucun argument requis
  • Fonctionne sur toutes les versions récentes de Windows (XP, Vista, 7) et probablement sur tous les systèmes basés sur NT.

2
Alors pourquoi est-ce là?
Nathan

6
@Nathan Avec les arguments appropriés, il peut appeler une fonction dans une DLL
Andrea

Droite. Par exemple, imaginez un print.exeprogramme simple qui affiche simplement les paramètres qui lui sont transmis. Sans aucun argument , il ne rien faire , mais en lui donnant des arguments fait quelque chose : > print foobar.
Synetech

@Andrea alors il ne fait rien sauf si aucun argument n'est fourni. Bien que cela ne soit pas suffisant selon ses exigences.
Barlop

3
Sauf que ce n'est probablement pas vraiment un no-op.
Andy Terra

36

Existe-t-il un fichier «noop» -esque quelque part dans l’installation de Windows?

Ce qui signifie spécifiquement un programme qui est fait pour ne rien faire et rien d'autre? Oui et non. Non, car Windows n'inclut pas un logiciel par défaut, mais inclut la possibilité d'en créer un vous-même.


Option 1

Exécutez notepad.exe , tapez les lignes suivantes et enregistrez-le sous C:\ret.scr(n'oubliez pas la ligne vide):

a
ret

rcx
1
n ret.com
w
q

Compilez-le avec debug.exe à l'invite de commande ( cmd.exe ) à l'aide de la commande suivante:

C:\> debug < ret.scr

Vous avez maintenant un programme ret.com(dans C: \) qui peut être utilisé dans des fichiers batch qui ne fait absolument rien du tout (enfin, sauf quit, si cela compte).

Remarque : debugn'est pas inclus sur les systèmes 64 bits.


Option 2

Sous Vista et dans les versions ultérieures, le framework .NET est inclus par défaut. Vous pouvez donc également créer un environnement virtuel, Windows ne rien faire, .exeavec C # ( compatible 64 bits ):

Exécutez notepad.exe et tapez les lignes suivantes en l’enregistrant sous C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Compilez-le avec csc.exe à l'invite de commande ( cmd.exe ) à l'aide de la commande suivante:

C:\> csc ret.cs

Vous avez maintenant un autre programme ret.exe(dans C: \) qui peut être utilisé dans des fichiers batch qui ne fait que retourner.


2
Zut Brilliant… tout le monde devrait vous inviter à voter pour celui-là… J'ai toujours voulu apprendre le langage d'assemblage… Je n'ai jamais utilisé le débogage et je pensais qu'il était mort sous DOS. Je suis tellement content d'avoir trébuché sur votre réponse ici. peut-être du fourrage pour un futur passe-temps!
Barlop

12
Pour moi, csc.exen'était pas sur mon chemin, mais il était situé àC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
AlcubierreDrive

Qu'en est-il d'un EXE qui est compilé à partir d'un programme C qui a juste une méthode principale, comme votre csc.exe Est-ce que cela fait beaucoup plus que le programme que vous avez écrit dans le débogage? Par exemple, y a-t-il beaucoup plus de langage d'assemblage dans ce programme?
barlop

1
@barlop, généralement oui. Même si une mainfonction vide semble fonctionner, ou du moins ne devrait être rien d’autre ret, si vous ouvrez un tel programme dans un désassembleur (ou même un éditeur hexadécimal), vous verrez que c’est beaucoup plus que cela. Il va généralement mettre en place toutes sortes de segments (code, données, etc.), préparer des piles et des tas, sans oublier d'importer toutes sortes de fonctions et de chaînes et autres, même si elle ne les utilise jamais.
Synetech

J'avais besoin de celui-ci pour remplacer un ancien logiciel de support externe pour un kit d'installation, en réduisant la taille du package, où ce logiciel n'est plus nécessaire, comme DirectX et VCruntimes. De plus, si vous n'avez pas ou ne voulez pas installer de compilateur, utilisez les compilateurs en ligne de tutorialspoint.com/codingground.htm , après la compilation, téléchargez le projet et vous aurez l'exécutable à l'intérieur de l'archive.
JasonXA

10

À ma connaissance, aucun programme inclus dans Windows () ne se ferme immédiatement lorsqu'il est exécuté (du moins exprès).

Cependant, dans Windows Vista et plus récent, il existe l' utilitaire timeout.exe . Timeout.exeattendra un nombre spécifié de secondes puis quittera. Par exemple:

C:\>timeout /t 0 > nul:

Paramétrer timeout.exepour attendre 0 seconde est à peu près aussi proche que vous obtiendrez un EXE qui se termine immédiatement.


3
Pour faire ce que l’Op veut, utilisez timeout comme ceci "timeout / t 0> nul:" - qui exécutera la commande timeout sans aucune sortie et se fermera immédiatement.
Misterjaytee

@misterjaytee bonne idée.
Andrew Lambert

@Tom: une fenêtre de console . Cela n'ouvrira pas une invite de commande à moins que vous ne couriez cmd.exespécifiquement.
Grawity

@grawity: le planificateur de tâches a besoin d'un processeur de commande pour que la commande soit exécutée; la fenêtre de la console s'affiche alors brièvement.
Tamara Wijsman le

@TomWijsman Malgré tous mes efforts, je ne peux ouvrir aucune nouvelle fenêtre.
Andrew Lambert

4

Sans les paramètres "C: \ Windows \ hh.exe" (Microsoft® HTML Help Executable) ne fait rien et il est inclus dans toute version de Windows, je suppose.


2

wscript sans argument n'exécute aucun script et est un exécutable "GUI" (n'ouvre pas de console).


2
Lorsque je lance wscript sans argument, le message "Windows Script Host Settings" apparaît. Windows 7 64 bits. Courir wscript /bsemble fonctionner cependant.
DuckMaestro

2

J'ai essayé rndll32.exeet les hh.exedeux n'ont pas modifié le% ERRORLEVEL%. C'est une variable d'environnement qui indique si le dernier exécutable a réussi. Fonctionne comme le code de retour unix.

Ma commande noop ci-dessous va définir le% ERRORLEVEL% à zéro, c'est:

cd %CD%

Il suffit de changer le répertoire de travail pour le répertoire actuel.


0

la commande echo offne fait rien dans un fichier batch (.BAT). Bien qu'il ne s'agisse pas d'un exécutable, il s'agit d'une commande interne à Windows.


7
En fait, il fait quelque chose, il éteint l'écho. Cela peut sembler bien rien si vous l’aurez réglé, mais si vous voulez faire écho, cela fait certainement quelque chose.
Synetech

6
et comme rem, ce n'est pas un exe windows
barlop

0

Compilez un simple programme C ++ "Hello World" pour créer un simple exe qui se fermerait immédiatement.
Enregistrez le code suivant dans un fichier texte avec un nom tel que a.cpp:

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

Ensuite, le compiler avec la dernière compilateur C ++ comme MinGW pour Windows 7.
En cas de MinGW, exécutez rapide commande suivante dans PowerShell ou Commande: g++ path\a.cpp( En supposant que vous avez défini la variable d' environnement PATH de g ++ emplacement binaire ou vous êtes dans g répertoire binaire ++ par exemple c : \ mingw \ bin par défaut). Après exécution de la commande, vous obtiendrez a.exe qui affichera Hello World et quittera. Vérifiez en double-cliquant ... La fenêtre de commande apparaîtra et disparaîtra immédiatement. L'accès en ligne de commande affiche Hello World et vous ramène à l'invite de la CLI.
Ensuite, vous pouvez déplacer ce a.exe dans system32 ou ailleurs dans Windows. Vous pouvez même le déployer sur le disque d'installation de Windows.


2
Je suis à peu près sûr qu'un compilateur C ++ n'est pas inclus dans Windows.
Synetech

6
Imprimer "Hello World" ne fait presque rien.
Keith Thompson

@Synetech Compilation n'est requis qu'une fois, tant que l'architecture du processeur est la même.
Apple II

1
@KeithThompson Je ne pense pas que cela perturberait l'algorithme BAT, mais si c'est vraiment important, remplacez Hello World par un caractère nul en ASCII.
Apple II

5
> Je ne pense pas que cela perturberait l'algorithme BAT, mais si cela importait vraiment, remplacez Hello World par un caractère nul en ASCII ou supprimez tout simplement la commande d'impression.
Synetech

0

Vous pouvez écrire un no-op en C comme ça

void main() {

}

et compilez-le dans un fichier .exe. Par exemple, si Visual Studio est installé sur votre ordinateur, vous pouvez ouvrir le bloc-notes, coller cet extrait, l'enregistrer sous le nom noop.c. Dans l'invite de commande cl noop.c, il sera utilisé pour générer un noop.exefichier dans le même dossier.

Vous pouvez ou non avoir à parcourir le Microsoft Visual Studio X.0dossier en Program Filespremier et à exécuter à vcvarsall.batpartir de l'invite de commande.


Vous avez manqué la partie de la question qui disait "partie d'une installation de Windows". En outre, le point-virgule est redondant.
Synetech

-1

Bien que ce ne soit pas l'objectif principal de cet outil, vous pouvez utiliser l'option / donothing de WuInstall - vous pouvez également spécifier un code de retour à renvoyer - voir http://help.wuinstall.com


Cela ne semble pas être inclus avec XP ou 7. Est-il inclus avec les versions Server?
Synetech
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.