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.

DuckMaestro
fonte
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.
Andrea
fonte
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.

Synetech
fonte
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.

Andrew Lambert
fonte
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.

ProCompSys
fonte
2

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

gravidade
fonte
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.

Neves
fonte
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.

obaqueiro
fonte
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.

Apple II
fonte
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.

Andy Terra
fonte
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

hsn
fonte
Isso não parece estar incluído no XP ou 7. Ele está incluído nas versões do servidor?
Synetech