Чи є програма Windows Exe, яка нічого не робить?


47

Чи є десь "noop" -esque exe як частина інсталяції Windows? Я готую кілька пакетних завдань і заплановані завдання, і з кількох причин я хотів би посилатися на виконуваний файл, який нічого не робить - тобто запускає без видимого вікна, і виходить негайно.

Чи існує такий виконуваний файл у звичайній інсталяції Windows де-небудь? або як я можу підійти близько? Мені не хочеться залежати від того, що вже не включено до Windows.


2
Зі спостереження: svchost.exeнічого не відкриває.
ta.speot.is

@ todda.speot.is ви повинні вказати це як повну відповідь.
DuckMaestro

2
Чи повинен це бути зовнішній (виконуваний) файл? Якщо ні, то remкоманда могла б працювати (і залежно від того, де в batch-файлі вона використовується, можливо, навіть ::варіант).
Synetech

Відповіді:


51

Ви можете використовувати rundll32:

  • Відсутнє вікно консолі
  • Побічних ефектів немає
  • Всього 44 Кб
  • Аргументів не потрібно
  • Працює у будь-якій останній версії Windows (XP, Vista, 7) і, мабуть, у будь-якій системі на базі NT.

2
То чому ж воно там?
Натан

6
@Nathan За допомогою відповідних аргументів він може викликати функцію всередині DLL
Андреа

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

@Andrea тоді нічого не робить, якщо не наводить жодних аргументів. Хоча цього недостатньо нічого відповідно до його вимог.
барлоп

3
За винятком того, що це, мабуть, насправді не-оп.
Енді Терра

36

Чи є десь "noop" -esque exe як частина інсталяції 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функція здається такою, яка вона є, або, принаймні, не має бути нічим іншим як a ret, якщо ви відкриєте таку програму в розбиральнику (або навіть шестигранному редакторі), ви побачите, що це набагато, набагато більше, ніж це. Зазвичай він встановлює всі види сегментів (код, дані тощо), готує стеки та купи, не кажучи вже про імпорт усіх видів функцій та рядків, і навіть якщо він ніколи насправді не використовує.
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

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

@Tom: вікно консолі . Він не відкриє командний рядок, якщо ви не запустите cmd.exeконкретно.
grawity

@grawity: Планувальнику завдань потрібен процесор управління для запуску команди, отже, на короткий час з’явиться вікно консолі.
Тамара Війсман

@TomWijsman Постарайтеся, я не можу отримати нове вікно, яке б відкрилося.
Ендрю Ламберт

4

Без параметрів "C: \ Windows \ hh.exe" (Microsoft Help HTML Executable) нічого не робить, і він включений у будь-яку версію 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
і, начебто, це не Windows
Exe

0

Створіть просту програму C ++ "Hello Hello", щоб створити просту програму EXE, яка завершиться негайно.
Збережіть наступний код у текстовому файлі з таким іменем, як a.cpp:

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

Потім, компілюйте його за допомогою ПОСЛІДНОГО компілятора C ++, наприклад MinGW для Windows 7.
У випадку MinGW виконайте таку команду в PowerShell або Command Prompt: g++ path\a.cpp(якщо припустити, що ви встановили екологічну змінну PATH у бінарному розташуванні g ++ або ви перебуваєте у д + двійковому каталозі g ++, тобто c : \ mingw \ bin за замовчуванням). Після виконання команди ви отримаєте a.exe, який відобразить Hello World та вихід. Перевірте, двічі клацнувши ... З'явиться вікно cmd та негайно зникне. Доступ до командного рядка відобразить Hello World та поверне вас у CLI-рядок.
Потім ви можете перемістити цей 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

Хоча це не головне призначення цього інструменту, ви можете скористатися параметром / доношенням WuInstall - ви також можете вказати код повернення, який слід повернути - див. Http://help.wuinstall.com


Схоже, це не включено до XP або 7. Чи включено він до версій сервера?
Synetech
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.