Есть ли Windows exe, который ничего не делает?


48

Есть ли где-нибудь исполняемый файл "noop" как часть установки Windows? Я готовлю несколько пакетных заданий и запланированных заданий, и по нескольким причинам я хотел бы сослаться на исполняемый файл, который ничего не делает - то есть запускается без видимого окна и сразу завершает работу.

Существует ли такой исполняемый файл в обычной установке Windows где-нибудь? или как я могу приблизиться? Я не хочу зависеть от того, что еще не включено в Windows.


2
Из наблюдения: svchost.exeничего не открывается.
ta.speot.is

@ todda.speot.is вы должны включить это в качестве полного ответа.
DuckMaestro

2
Должен ли это быть внешний (исполняемый) файл? Если нет, то remкоманда могла бы работать (и в зависимости от того, где в пакетном файле она используется, возможно, даже ::вариант).
Synetech

Ответы:


51

Вы можете использовать rundll32:

  • Нет консольного окна
  • Нет побочных эффектов
  • Всего 44 кб
  • Никаких аргументов не требуется
  • Работает на всех последних версиях Windows (XP, Vista, 7) и, вероятно, на каждой системе на базе NT.

2
Так почему же это там?
Натан

6
@ Натан С соответствующими аргументами он может вызывать функцию внутри DLL
Andrea

Правильно. Например, представьте простую print.exeпрограмму, которая просто распечатывает параметры, которые ей передаются. Без каких - либо аргументов , он не будет делать ничего , но придав ему аргументы , что - то делает : > print foobar.
Synetech

@ Андреа тогда ничего не сделает, если не будет аргументов. Хотя это не достаточно по его требованиям.
Барлоп

3
За исключением того, что это, вероятно, не совсем неоперативный.
Энди Терра

36

Есть ли где-нибудь исполняемый файл "noop" как часть установки Windows?

Имеется в виду, в частности, программа, которая предназначена для ничего и ничего другого? Да и нет. Нет, Windows не включает один по умолчанию, но он включает в себя возможность сделать его самостоятельно.


Опция 1

Запустите notepad.exe , введите следующие строки и сохраните их как C:\ret.scr(не забудьте пустую строку):

a
ret

rcx
1
n ret.com
w
q

Скомпилируйте его с помощью debug.exe в командной строке ( cmd.exe ) с помощью следующей команды:

C:\> debug < ret.scr

Теперь у вас есть программа ret.com(на C: \), которую можно использовать в пакетных файлах, которая абсолютно ничего не делает (кроме выхода, если это считается).

Примечание : debugне включено в 64-битных системах.


Вариант 2

В Vista и более поздних версиях .NET Framework включена по умолчанию, так что вы также можете сделать собственный, Windows ничего не делать .exeс C # ( 64-битная совместимость ):

Запустите notepad.exe и введите следующие строки, сохранив их как C:\ret.cs:

class rte
{
   static void Main() {
   }
}

Скомпилируйте его с помощью csc.exe в командной строке ( cmd.exe ) с помощью следующей команды:

C:\> csc ret.cs

Теперь у вас есть другая программа ret.exe(в C: \), которую можно использовать в пакетных файлах, которая ничего не делает, кроме возврата.


2
Черт бы побрал ... все должны тебя за это поблагодарить ... Я всегда хотел выучить ассемблер ... Я никогда не использовал отладку и думал, что он умер с DOS. Я так рада, что наткнулась на ваш ответ здесь. может быть, корм для будущего хобби!
Бароп

12
Для меня csc.exeне было на моем пути, но он был расположен по адресуC:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
AlcubierreDrive

как насчет EXE, которое скомпилировано из программы на C, которая имеет основной метод, такой как ваш csc.exe? Это делает намного больше, чем программа, которую вы написали в отладке? например, есть ли намного больше ассемблера с этой программой?
Барлоп

1
@ barlop, как правило, да. Хотя пустая mainфункция выглядит так, как она есть, или, по крайней мере, она должна быть не чем иным ret, как если бы вы открывали такую ​​программу в дизассемблере (или даже в hex-редакторе), вы увидите, что это намного, намного больше, чем это. Он обычно настраивает все виды сегментов (код, данные и т. Д.), Подготавливает стеки и кучи, не говоря уже об импорте всех видов функций и строк и тому подобное, даже если он на самом деле их никогда не использует.
Synetech

Мне понадобилось это, чтобы заменить какое-то старое внешнее программное обеспечение поддержки для установочного комплекта, уменьшив размер пакета, где это программное обеспечение больше не требуется, например, DirectX и VCruntimes. Также, если у вас нет или вы хотите установить какой-либо компилятор, используйте онлайн-компиляторы с tutorialspoint.com/codingground.htm , после компиляции загрузите проект, и он будет иметь exe-файл внутри архива.
JasonXA

10

Нет никаких программ, включенных в Windows (о которых я знаю), которые сразу же завершаются при выполнении (по крайней мере, нарочно).

Однако в Windows Vista и новее есть утилита timeout.exe . Timeout.exeбудет ждать указанное количество секунд и затем выйти. Например:

C:\>timeout /t 0 > nul:

Настройка timeout.exeожидания в течение 0 секунд примерно так же близка, как вы попадете в EXE-файл, который немедленно завершает работу.


3
Чтобы сделать то, что хочет операционная система, используйте timeout, например, «timeout / t 0> nul:», - который запустит команду timeout без каких-либо выходных данных и немедленно завершит работу.
Господин

@misterjaytee хорошая идея.
Эндрю Ламберт

@Tom: окно консоли . Он не откроет командную строку, если вы не запустите cmd.exeспециально.
Гравитация

@grawity: планировщику заданий необходим командный процессор для выполнения команды, поэтому окно консоли кратко отобразится.
Тамара Вийсман

@ TomWijsman. Как ни старайся, я не могу открыть ни одного нового окна.
Эндрю Ламберт

4

Без параметров «C: \ Windows \ hh.exe» (исполняемый файл справки Microsoft® HTML) ничего не происходит, и я полагаю, что он включен в любую версию Windows.


2

wscript без аргументов не запускает сценарий вообще и является исполняемым файлом «GUI» (не открывает консоль).


2
Когда я запускаю wscript без аргументов, я получаю «Настройки хоста скрипта Windows», который появляется. Windows 7 64-битная. wscript /bКажется, работает бег .
DuckMaestro

2

Я пробовал rndll32.exeи hh.exeно оба тогда не изменял% ERRORLEVEL%. Это переменная среды, которая сообщает, был ли последний исполняемый файл успешным. Работает как код возврата Unix.

Моя команда noop ниже установит% ERRORLEVEL% в ноль:

cd %CD%

Просто изменив рабочий каталог на текущий.


0

команда echo offничего не делает внутри пакетного файла (.BAT). Хотя это не исполняемый файл, это внутренняя команда Windows.


7
На самом деле это действительно сделать что - то, он поворачивает вторя прочь. Это может показаться бесполезным, если вы отключите его, но если вы хотите эхо, то оно, безусловно, что-то делает.
Synetech

6
и, как rem, это не windows exe
barlop

0

Скомпилируйте простую программу C ++ «Hello World», чтобы создать простой exe-файл, который немедленно завершится.
Сохраните следующий код в текстовом файле с именем, например, a.cpp:

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

Затем скомпилируйте его с помощью компилятора LATEST C ++, такого как MinGW для Windows 7.
В случае MinGW выполните следующую команду в PowerShell или командной строке: g++ path\a.cpp(Предполагая, что вы установили переменную PATH среды двоичного расположения g ++ или находитесь в двоичном каталоге g ++, т.е. c : \ mingw \ bin по умолчанию). После выполнения команды вы получите a.exe, который отобразит Hello World и завершит работу. Проверьте двойным щелчком мыши ... Окно cmd появится и исчезнет сразу. Доступ к командной строке отобразит Hello World и вернет вас к командной строке.
Затем вы можете переместить этот a.exe в system32 или куда-нибудь вглубь Windows. Вы даже можете развернуть его на установочном диске Windows.


2
Я уверен, что компилятор C ++ не включен в Windows.
Synetech

6
Печать "Hello World" вряд ли делает ничего.
Кит Томпсон

@Synetech Компиляция требуется только один раз, если архитектура процессора одинакова ..
Apple II

1
@KeithThompson Я не думаю, что это помешает алгоритму BAT, но если это действительно имеет значение, замените Hello World на нулевой символ ASCII ..
Apple II

5
> Я не думаю, что это помешает алгоритму BAT, но если это действительно имеет значение, замените Hello World на нулевой символ ASCII или просто полностью удалите команду печати.
Synetech

0

Вы можете написать неоперативный в C, как так

void main() {

}

и скомпилируйте его в файл .exe. Например, если у вас установлена ​​Visual Studio, вы можете открыть блокнот, вставить этот фрагмент, сохранить его как noop.c и использовать в командной строке, cl noop.cи он выведет noop.exeфайл в ту же папку.

Возможно, вам придется или не нужно сначала просматривать Microsoft Visual Studio X.0папку Program Filesи запускать vcvarsall.batиз командной строки.


Вы пропустили ту часть вопроса, которая гласила «часть установки Windows». Кроме того, точка с запятой является избыточной.
Synetech

-1

Хотя это не является основной целью этого инструмента, вы можете использовать параметр / donothing в WuInstall - вы также можете указать код возврата, который должен быть возвращен - см. Http://help.wuinstall.com


Это, кажется, не входит в XP или 7. Это включено в версии сервера?
Synetech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.