Esiste un exe di Windows che non fa nulla?


48

Esiste un exe "noop" da qualche parte come parte dell'installazione di Windows? Sto preparando alcuni processi batch e attività pianificate, e per un paio di motivi vorrei fare riferimento a un eseguibile che non fa nulla, ovvero si avvia senza finestra visibile e si chiude immediatamente.

Esiste un simile eseguibile nella solita installazione di Windows ovunque? o come posso avvicinarmi? Non voglio dipendere da qualcosa che non sia già incluso in Windows.


2
Dall'osservazione: svchost.exenon apre nulla.
ta.speot.è il

@ todda.speot.is dovresti includerlo come risposta completa.
DuckMaestro,

2
Doveva essere un file esterno (eseguibile)? In caso contrario, il remcomando avrebbe potuto funzionare (e in base al punto in cui viene utilizzato il file batch, probabilmente anche la ::variante).
Synetech,

Risposte:


51

Puoi usare rundll32:

  • Nessuna finestra della console
  • Nessun effetto collaterale
  • Solo 44 KB
  • Nessun argomento richiesto
  • Funziona su tutte le versioni recenti di Windows (XP, Vista, 7) e probabilmente su tutti i sistemi basati su NT.

2
Allora perché è lì?
Nathan,

6
@Nathan Con gli argomenti appropriati, può chiamare una funzione all'interno di una DLL
Andrea

Destra. Ad esempio, immagina un semplice print.exeprogramma che stampa semplicemente i parametri che viene passato. Senza argomenti sarebbe non fare nulla , ma dandogli argomenti fa qualcosa : > print foobar.
Synetech,

@Andrea quindi non fa nulla se non viene dato alcun argomento. Anche se è abbastanza niente secondo le sue esigenze.
barlop

3
Solo che probabilmente non è davvero una no-op.
Andy Terra,

36

Esiste un exe "noop" da qualche parte come parte dell'installazione di Windows?

Intendi in particolare un programma che non intende fare nient'altro? Sì e no. No in quanto Windows non ne include uno per impostazione predefinita, ma include la possibilità di crearne uno tu stesso.


opzione 1

Esegui notepad.exe , digita le seguenti righe e salvalo come C:\ret.scr(non dimenticare la riga vuota):

a
ret

rcx
1
n ret.com
w
q

Compilarlo con debug.exe al prompt dei comandi ( cmd.exe ) con il seguente comando:

C:\> debug < ret.scr

Ora hai un programma, ret.com(in C: \) che può essere usato in file batch che non fa assolutamente nulla (beh, se non quello di smettere, se questo conta).

Nota : debugnon è incluso nei sistemi a 64 bit.


opzione 2

In Vista e versioni successive, il framework .NET è incluso per impostazione predefinita, quindi puoi anche fare un nativo, Windows non fare nulla .execon C # ( compatibile a 64 bit ):

Esegui notepad.exe e digita le seguenti righe, salvandolo come C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Compilarlo con csc.exe al prompt dei comandi ( cmd.exe ) con il seguente comando:

C:\> csc ret.cs

Ora hai un altro programma, ret.exe(in C: \) che può essere usato in file batch che non fa altro che restituire.


2
Accidenti Brilliant .. tutti dovrebbero votarti per quello .. Ho sempre voluto imparare il linguaggio assembly .. Non ho mai usato il debug e ho pensato che fosse morto con DOS. Sono così felice di essermi imbattuto nella tua risposta qui. forse foraggio per un futuro hobby!
barlop

12
Per me, csc.exenon era sulla mia strada, ma si trovava aC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
AlcubierreDrive

che dire di un EXE che è compilato da un programma C che ha solo un metodo principale, come il tuo csc.exe Sta facendo molto di più del programma che hai scritto nel debug? per esempio, c'è molto più linguaggio di assemblaggio lì con quel programma?
barlop

1
@barlop, generalmente sì. Mentre una mainfunzione vuota sembra come sarebbe, o almeno non dovrebbe essere altro che una ret, se apri un programma del genere in un disassemblatore (o anche in un editor esadecimale), vedrai che è molto, molto più di questo. Di solito imposterà tutti i tipi di segmenti (codice, dati, ecc.), Preparerà stack e heap, per non parlare dell'importazione di tutti i tipi di funzioni e stringhe e simili anche se non li utilizza mai realmente.
Synetech,

Ne avevo bisogno per sostituire un vecchio software di supporto esterno per un kit di installazione, riducendo le dimensioni del pacchetto, dove quel software non è più necessario, come DirectX e VCruntimes. Inoltre, se non hai o vuoi installare alcun compilatore, usa i compilatori online da tutorialspoint.com/codingground.htm , dopo la compilazione, scarica il progetto e avrà l'exe all'interno dell'archivio.
JasonXA,

10

Non ci sono programmi inclusi in Windows (di cui sono a conoscenza) che si chiudono immediatamente quando vengono eseguiti (almeno di proposito).

In Windows Vista e versioni successive, tuttavia, è disponibile l' utilità timeout.exe . Timeout.exeattenderà un determinato numero di secondi e poi uscirà. Per esempio:

C:\>timeout /t 0 > nul:

L'impostazione timeout.exedi attendere 0 secondi è quasi quanto si arriva a un EXE che esce immediatamente.


3
Per fare ciò che l'Op vuole, usa il timeout come questo "timeout / t 0> nul:" - che eseguirà il comando di timeout senza alcun output e uscirà immediatamente.
misterjaytee,

@misterjaytee buona idea.
Andrew Lambert,

@ Tom: una finestra della console . Non aprirà un prompt dei comandi a meno che non si esegua cmd.exespecificamente.
gravità

@grawity: l'Utilità di pianificazione necessita di un processore dei comandi per l'esecuzione del comando, quindi la finestra della console mostrerà brevemente.
Tamara Wijsman,

@TomWijsman Prova come potrei, non riesco ad aprire una nuova finestra.
Andrew Lambert,

4

Senza i parametri "C: \ Windows \ hh.exe" (Microsoft® HTML Help Executable) non fa nulla ed è incluso in qualsiasi versione di Windows, suppongo.


2

wscript senza argomenti non esegue alcuno script ed è un eseguibile "GUI" (non apre una console).


2
Quando eseguo wscript senza argomenti, viene visualizzato il messaggio "Impostazioni host script Windows". Windows 7 a 64 bit. Correre wscript /bsembra funzionare però.
DuckMaestro,

2

Ho provato rndll32.exee hh.exema entrambi poi non ha alterato l'% ERRORLEVEL%. È una variabile di ambiente che indica se l'ultimo eseguibile ha avuto esito positivo. Funziona come il codice di ritorno unix.

Il mio comando noop di seguito imposta% ERRORLEVEL% su zero è:

cd %CD%

Basta cambiare la directory di lavoro con quella corrente.


0

il comando echo offnon fa nulla all'interno di un file batch (.BAT). Sebbene non sia un eseguibile, è un comando interno di Windows.


7
In realtà fa qualcosa, disattiva l'eco. Potrebbe non sembrare nulla se l'hai disattivato, ma se vuoi fare eco, allora sicuramente fa qualcosa.
Synetech,

6
e come rem, non è un
ex

0

Compilare un semplice programma C ++ "Hello World" per creare un exe che uscirà immediatamente.
Salva il seguente codice in un file di testo con un nome come a.cpp:

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

Quindi, compilalo con il compilatore ULTIMO C ++ come MinGW per Windows 7.
In caso di MinGW, esegui il comando seguente in PowerShell o Prompt dei comandi: g++ path\a.cpp(Supponendo che tu abbia impostato la variabile PATH ambientale della posizione binaria g ++ o sei nella directory binaria g ++, cioè c : \ mingw \ bin per impostazione predefinita). Dopo l'esecuzione del comando, otterrai a.exe che visualizzerà Hello World e uscirà. Verifica facendo doppio clic su ... la finestra cmd apparirà e scomparirà immediatamente. L'accesso alla riga di comando visualizzerà Hello World e tornerà al prompt della CLI.
Quindi, è possibile spostare questo a.exe in system32 o ovunque all'interno di Windows. Puoi persino distribuirlo nel disco di installazione di Windows.


2
Sono abbastanza sicuro che un compilatore C ++ non sia incluso in Windows.
Synetech,

6
Stampare "Hello World" non fa quasi nulla.
Keith Thompson,

La compilazione @Synetech è richiesta solo una volta, purché l'architettura della CPU sia la stessa ..
Apple II,

1
@KeithThompson Non credo che interferirebbe con l'algoritmo BAT, ma se è davvero importante, sostituisci Hello World con il carattere null ASCII ..
Apple II

5
> Non penso che interferirebbe con l'algoritmo BAT, ma se è davvero importante, sostituisci Hello World con il carattere null ASCII O rimuovi semplicemente il comando di stampa.
Synetech,

0

Puoi scrivere una no-op in C in questo modo

void main() {

}

e compilarlo in un file .exe. Ad esempio, se hai installato Visual Studio, puoi aprire il blocco note, incollare lo snippet, salvarlo come noop.c e nel prompt dei comandi utilizzare cl noop.ce verrà noop.exegenerato un file nella stessa cartella.

Potrebbe essere necessario o non dover prima accedere alla Microsoft Visual Studio X.0cartella Program Filesed eseguire vcvarsall.batdal prompt dei comandi.


Hai perso la parte della domanda che diceva "parte di un'installazione di Windows". Inoltre, il punto e virgola è ridondante.
Synetech,

-1

Sebbene non sia lo scopo principale di questo strumento, puoi utilizzare l'opzione / donothing di WuInstall - puoi anche specificare un codice di ritorno che dovrebbe essere restituito - vedi http://help.wuinstall.com


Ciò non sembra essere incluso con XP o 7. È incluso con le versioni Server?
Synetech,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.