Existe um exe do Windows que não faz nada?


47

Existe um exe "noop" -esque em algum lugar como parte da instalação do Windows? Estou preparando alguns trabalhos em lotes e tarefas agendadas e, por algumas razões, gostaria de fazer referência a um executável que não faz nada - ou seja, inicia sem janela visível e sai imediatamente.

Esse executável existe na instalação usual do Windows em algum lugar? ou como posso chegar perto? Não quero depender de nada ainda não incluído no Windows.


2
Da observação: svchost.exenão abre nada.
— ta.speot.is

@ todda.speot.é você deve incluir isso como uma resposta completa.
— DuckMaestro

2
Tinha que ser um arquivo externo (executável)? Caso contrário, o remcomando poderia ter funcionado (e, dependendo do local do arquivo em lote, possivelmente até a ::variante).
— Synetech 29/11

Respostas:


51

Você pode usar rundll32:

  • Nenhuma janela do console
  • Sem efeitos colaterais
  • Apenas 44 KB
  • Nenhum argumento necessário
  • Funciona em todas as versões recentes do Windows (XP, Vista, 7) e provavelmente em todos os sistemas baseados em NT.

2
Então, por que está lá?
— Nathan

6
@ Nathan Com os argumentos apropriados, ele pode chamar uma função dentro de uma DLL
— Andrea

Direita. Por exemplo, imagine um print.exeprograma simples que simplesmente imprima os parâmetros que são passados. Sem nenhum argumento seria não fazer nada , mas dando-lhe argumentos faz algo : > print foobar.
— Synetech

@ Andrea, então, não faz nada, a menos que não haja argumentos. Embora isso não seja suficiente, conforme suas exigências.
— Barlop 23/05

3
Exceto que provavelmente não é realmente um não-op.
— Andy Terra

36

Existe um exe "noop" -esque em algum lugar como parte da instalação do Windows?

Significado especificamente um programa que se destina a fazer nada e mais nada? Sim e não. Não, pois o Windows não inclui um por padrão, mas inclui a capacidade de criar um você mesmo.


Opção 1

Execute o notepad.exe , digite as seguintes linhas e salve-o como C:\ret.scr(não esqueça a linha em branco):

a
ret

rcx
1
n ret.com
w
q

Compile-o com o debug.exe no prompt de comando ( cmd.exe ) com o seguinte comando:

C:\> debug < ret.scr

Agora você tem um programa ret.com(em C: \) que pode ser usado em arquivos em lotes que não fazem absolutamente nada (bem, exceto sair, se isso conta).

Nota : debugnão está incluído em sistemas de 64 bits.


opção 2

No Vista e versões posteriores, a estrutura .NET é incluída por padrão; portanto, você também pode criar um Windows nativo sem fazer nada .execom C # ( compatível com 64 bits ):

Execute o notepad.exe e digite as seguintes linhas, salvando-o como C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Compile-o com o csc.exe no prompt de comando ( cmd.exe ) com o seguinte comando:

C:\> csc ret.cs

Agora você tem outro programa ret.exe(em C: \) que pode ser usado em arquivos em lotes que não fazem nada além de retornar.


2
Droga, brilhante ... todo mundo deveria votar em você por esse. Eu sempre quis aprender a linguagem assembly. Eu nunca usei a depuração e pensei que ela morresse com o DOS. Tão feliz que eu tropecei em sua resposta aqui. talvez forragem para um hobby futuro!
— 24512 barlop

12
Para mim, csc.exenão estava no meu caminho, mas foi localizado naC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
— Propulsão Alcubierre

e quanto a um EXE compilado a partir de um programa C que possui apenas um método principal, como o seu csc.exe Isso está fazendo muito mais do que o programa que você escreveu em depuração? por exemplo, existe muito mais linguagem assembly nesse programa?
— Barlop 23/05

11
@ Barlop, geralmente sim. Embora uma mainfunção vazia pareça, ou pelo menos não deva ser mais que a ret, se você abrir um programa em um desmontador (ou mesmo um editor hexadecimal), verá que é muito, muito mais que isso. Geralmente, ele configura todos os tipos de segmentos (código, dados, etc.), prepara pilhas e pilhas, sem mencionar a importação de todos os tipos de funções e seqüências de caracteres, etc., mesmo que nunca os utilize de fato.
— Synetech

Eu precisava desse para substituir algum software de suporte externo antigo por um kit de instalação, reduzindo o tamanho do pacote, onde esse software não é mais necessário, como DirectX e VCruntimes. Além disso, se você não possui ou deseja instalar nenhum compilador, use compiladores on-line em tutorialspoint.com/codingground.htm , após a compilação, faça o download do projeto e ele terá o exe dentro do arquivo morto.
— JasonXA

10

Não há nenhum programa incluído no Windows (que eu saiba) que saia imediatamente quando executado (pelo menos de propósito).

No Windows Vista e versões mais recentes, no entanto, existe o utilitário timeout.exe . Timeout.exeesperará um número especificado de segundos e depois sairá. Por exemplo:

C:\>timeout /t 0 > nul:

Configurar timeout.exepara esperar por 0 segundos é o mais próximo possível de um EXE que sai imediatamente.


3
Para fazer o que o Op quer, use timeout como este "timeout / t 0> nul:" - que executará o comando timeout sem nenhuma saída e será fechado imediatamente.
— misterjaytee

@misterjaytee good idea.
— Andrew Lambert

@ Tom: Uma janela do console . Não abrirá um prompt de comando, a menos que você execute cmd.exeespecificamente.
— grawity

@rawrawity: O Agendador de tarefas precisa de um processador de comando para executar o comando; portanto, a janela do console será exibida brevemente.
— Tamara Wijsman

@ TomWijsman Por mais que eu tente, não consigo abrir nenhuma nova janela.
— Andrew Lambert

4

Sem os parâmetros "C: \ Windows \ hh.exe" (executável da Ajuda em HTML da Microsoft®) não faz nada e é incluído em qualquer versão do Windows, eu acho.


2

wscript sem argumentos não executa nenhum script e é um executável "GUI" (não abre um console).


2
Quando executo o wscript sem argumentos, recebo uma "Configuração do host de scripts do Windows" que aparece. Windows 7 de 64 bits. Correr wscript /bparece funcionar.
— DuckMaestro 22/01/12

2

Eu tentei rndll32.exee, hh.exemas ambos não alteraram o% ERRORLEVEL%. É uma variável de ambiente que diz se o último executável foi bem-sucedido. Funciona como o código de retorno unix.

Meu comando noop abaixo irá definir o% ERRORLEVEL% como zero é:

cd %CD%

Apenas alterando o diretório de trabalho para o atual.


0

o comando echo offnão faz nada em um arquivo em lotes (.BAT). Embora não seja um executável, é um comando interno do Windows.


7
Na verdade, ele faz alguma coisa, desativa o eco. Isso pode parecer nada se você tiver desativado, mas se você quiser ecoar, certamente fará alguma coisa.
— Synetech

6
e como REM, não é um Windows exe
— barlop

0

Compile um programa C ++ simples "Hello World" para criar um exe simples que saia imediatamente.
Salve o seguinte código em um arquivo de texto com algum nome como a.cpp:

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

Em seguida, compilá-lo com o compilador ÚLTIMAS C ++ como MinGW para Windows 7.
Em caso de MinGW, execute seguinte comando em PowerShell ou Command Prompt: g++ path\a.cpp(Supondo que você definiu variável PATH ambiental de g ++ localização binário ou você está em g ++ binário diretório ou seja, c : \ mingw \ bin por padrão). Após a execução do comando, você receberá a.exe, que exibirá Hello World e sairá. Verifique com um clique duplo ... A janela cmd aparecerá e desaparecerá imediatamente. O acesso à linha de comando exibirá Hello World e retornará você ao prompt da CLI.
Em seguida, você pode mover esse a.exe no system32 ou em qualquer lugar dentro do Windows. Você pode até implementá-lo no disco de instalação do Windows.


2
Tenho certeza de que um compilador C ++ não está incluído no Windows.
— Synetech

6
Imprimir "Hello World" dificilmente não está fazendo nada.
— 21412 Keith Thompson

@Synetech Compilation é necessária apenas uma vez, enquanto a arquitetura CPU é mesmo ..
— Apple II

11
@KeithThompson Eu não acho que seria a interferência com o algoritmo BAT, mas se isso realmente importa, substitua Olá Mundo com caracteres ASCII nula ..
— Apple II

5
> Eu não acho que isso interferiria no algoritmo BAT, mas se realmente importa, substitua Hello World por caractere nulo ASCII Ou apenas remova o comando print completamente.
— Synetech

0

Você pode escrever um no-op em C, assim

void main() {

}

e compile-o em um arquivo .exe. Por exemplo, se você tiver o Visual Studio instalado, poderá abrir o bloco de notas, colar esse trecho, salvá-lo como noop.c e no prompt de comando, use cl noop.ce ele produzirá um noop.exearquivo na mesma pasta.

Você pode ou não ter que procurar a Microsoft Visual Studio X.0pasta Program Filesprimeiro e executar vcvarsall.batno prompt de comando.


Você perdeu a parte da pergunta que dizia "parte de uma instalação do Windows". Além disso, o ponto e vírgula é redundante.
— Synetech

-1

Embora não seja o objetivo principal desta ferramenta, você pode usar a opção / donothing do WuInstall - você também pode especificar um código de retorno que deve ser retornado - consulte http://help.wuinstall.com


Isso não parece estar incluído no XP ou 7. Ele está incluído nas versões do servidor?
— Synetech
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.