Запуск Windows 3.11 с Word и Excel

Преамбула

Один из юзеров lj.rossia.org намедни решил поностальгировать и поиграться с DOS’ом, и в это же время мне попался образ готовой системы с Windows 3.11, ну как образ — на самом деле это был бэкап установленной уже системы, но без, собственно DOS 6.22, зато в Windows уже был установлен Word, Excel и даже какая-то поддержка сети. Со всем этим, в свое время, ИРЛ я имел только шапочное знакомство, так что попытаюсь реанимировать старый бэкап.

Начальная настройка

Запустилось!

Дальнейшая настройка

Office работает!

Word:


Excel:


Остальное

Еще один браузер, работающий на Pentium III без SSE2

Продолжаем старую тему (копия)

Нашел еще одну старую версию браузера:

SRWare Iron — браузер, разрабатываемый немецкой компанией SRWare на основе исходного кода проекта Chromium. Основная причина его появления — факт отслеживания действий пользователя браузером Google Chrome[5]. SRWare Iron не осуществляет ничего подобного[6]. Iron использует последние версии WebKit и V8, в то время, как Google Chrome использует стабильные версии этих движков. Ещё можно отметить наличие у Iron функции блокировки рекламы (так называемый Ad-blocking).

Скачать

С Mega.nz
С Internet Archive

Остальные браузеры (на Mega.nz):
Ссылка 1
Ссылка 2

Установка Windows XP из-под DOS, самый старый способ установки XP с жесткого диска вручную.

Преамбула

Вызвали тут к клиенту, у которого на станке с ЧПУ отвалилось рабочее место оператора, оказалось, накрылась винда. АРМ представляло из себя весьма древний комп с Windows XP и совтом для станка на борту. Именно, не софтом, а совтом, sovt’ом когда-то называли софт, разработанный в СССР, так и тут — второй раз за неделю сталкиваюсь с колхозом, написанным сумрачным российским гением под сумрачные российские разработки в лохматых годах.

Машина оказалась не раритетной, но уже винтажной.

Сетевая карта внешняя, PCI, без PXE-загрузчика, так что загрузка по сети отмелась сразу же. Слава Ктулху, с флэшек оно все-таки грузилось.

Везти машину ко мне домой или в офис смысла не было. На флешках, взятых с собой, была мультизагрузочная, подготовленная с помощью YUMI с Acronis Disk Director, Hiren’s Boot CD и виндой XP на борту, но оказалось, что для установки винды из образа в машине мало оперативной памяти, распаковывать его некуда.

Но Hiren’s Boot CD после некоторого шаманства, загрузился с WinPE, удалось слить совтину от станка.

Образ винды XP был с собой, чистый дистрибутив, перенесенный с помощью Rufus на флэшку, но это тоже не помогло, после копирования файлов в текстовом режиме установщика, на этой машине установщик винды, терял флэшку и сыпался с невнятными ошибками.

Но тут я вспомнил! XP можно установить из DOS-окружения! А почему бы и не попробовать! DOS-то мы раздобудем!

Подготовка флэшки для восстановления системы.

Сначала, с помощью Rufus я сделал флэшку с Hiren’s Boot CD (ссылки на софт см. в конце заметки), на нее записал в каталог DISTR распакованный из образа ISO дистирибутив Windows XP, драйвера (в данном случае, пришлось воспользоваться старой версией DriverPack Solution), необходимый софт от АРМ станка (был слит заранее, вам не надо).
Проверяем, чтоб в настройках Rufus была выставлена файловая система FAT32 и MBR для компьютеров с BIOS или UEFI-CSM.

Также может понадобиться какая-нибудь форматилка (утилита для разметки и форматирования) жесткого диска, у меня загрузилась старая версия Acronis Disk Director на отдельной флэшке.

Далее под катом

Файлы

Минимальные файлы DOS (HIMEM.SYS, SMARTDRV.EXE, AUTOEXEC.BAT, CONFIG.SYS):

Скачать с Mega.NZ
Скачать с Google.Drive
Hiren’s Boot CD 15.2

Пропал значок клавиатуры в Windows 7 (языковая панель).

И как я это поборол.

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

Забегая вперед, дело, похоже, было в антивирусе, то ли Касперский, то ли какая-то древняя версия Авиры нагадила в автозагрузку и Планировщик задач, похерив запуск языковой панели. У клиента сначала стояло одно, потом другое, глюк он заметил где-то между, потому сразу не обратился, а кто конкретно виноват, я выяснять, естественно не стал.

Шаг первый. Стандартная проверка.

1. Заходим в Панель управления —> Язык и региональные стандарты или через Выполнить (клавиши Win+R): команда: intl.cpl

2. Переключаемся на вкладку Языки и клавиатуры, нажимаем кнопку Изменить клавиатуру.

Откроется окно Языки и службы текстового ввода.

Примечание: Для вызова этого окна непосредственно, также есть команда, которую необходимо выполнить в командной строке или окне Выполнить:

rundll32 shell32.dll,Control_RunDLL input.dll

В этом окне переходим на вкладку Языковая панель и проверяем, чтобы переключатель (радиокнопка) была в положении Закреплена в панели задач.

Если это так, но значка клавиатуры нет, то можно попробовать переключить радиокнопку в положение Скрыта или Располагается в произвольном месте рабочего стола, потом нажать кнопку Применить, вернуть радиокнопку в положение Закреплена в панели задач, вновь нажать Применить или OK. Если значок клавиатуры вернулся, то все хорошо, открываем шампанское и празднуем. Если нет, переходим к следующему шагу.

ВНИМАНИЕ!

Неосторожное обращение с Планировщиком заданий или Реестром могут серьезно повредить систему, потому на этом этапе настоятельно рекомендуется создать точку восстановления системы.

1. Ищем в поиске меню Пуск «Создание точки восстановления» и запускаем соответствующий ярлык, или вводим команду systempropertiesprotection в окне Выполнить или командной строке. Также, можно щелкнуть правой клавишей мыши по значку Компьютер, в контекстном меню выбрать пункт Свойства, далее щелкнуть по ссылке Дополнительные параметры системы, и в появившемся окне перейти на вкладку Защита системы. Нажимаем кнопку Создать

В следующем окне вводим имя точки восстановления, любое, главное, чтоб сами потом нашли, например RestoreLangPanel.

Если все хорошо, система скажет, что точка восстановления создана успешно.

Далее под катом

Далее, надо проверить, прописан ли запуск ctfmon.exe в Реестре Windows. Запускаем Regedit и переходим по адресу HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Если там нет строкового параметра, содержащего путь к ctfmon.exe,

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

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]

"ctfmon.exe"="C:\\Windows\\System32\\ctfmon.exe"

Скачать файл с Mega.NZ
Скачать файл с Google.Drive
Файл на PasteBin

После внесения изменений в Реестр, нужно перезагрузить компьютер.

У меня все получилось:

Программа для теста клавиатуры Keyboard Test Utility 1.4.0

Решил перебрать на складе залежи клавиатур, дабы определить, которые выкинуть, которые себе забрать, а которые еще годные. А то об эту стопку бухгалтересса постоянно спотыкается, не дай Ктулху, каблук сломает. Съест же, как КПСС. Понадобилась программка для тестирования. Нашел вот Keyboard Test Utility 1.4.0.

Плюсы:

+ Запускается без установки.
+ Размер 2 Мб.
+ Freeware (но вроде не Opensource).
+ Поддерживает клавиатуры ANSI (стандартная), SL-91 (хз что такое, не нашел) и DP-72


SL-91


DP-72

+ Самый главный: отображает нажатия на сразу несколько клавиш. Очень удобно, если клава не работает, от того, что засралась, нажимаются сразу несколько клавиш, и надо определить, какие клавиши отковырять и почистить.

Совместимость:

— Windows XP/7/8/8.1/10
— USB и PS/2 клавиатуры

Скачать

С Mega.NZ (7zip, 711 Кб)

Браузеры для Pentium II/III для процессоров без поддержки инструкций SSE2

Нашел еще одну подборку браузеров для процессоров без поддержки инструкций SSE2, способных работать на старых компьютерах Pentium III (некоторые должны и на Pentium II) под Windows XP.

Продолжая эту тему (копия)

Скачать с Mega.nz

Chrome 33 (Standalone Setup)
Firefox Setup 45.9.0 ESR none SSE2
Firefox Setup 48.0.2 none SSE2
Opera 20.0.1387.91 none SSE2
Chromium 35.0.1870.2 portable

Программа для генерации и чтения QR-кодов для Windows

Преамбула

На самом деле достали эти QR-коды и не только «от модной болезни», но и вообще. Лезут таки изо всех щелей. А лопат идиот-фонов я с собой не ношу, во всяком случае в ГОРФ, они мне тут без надобности, благо есть мягенькое креслице и уютный десктоп с полноценной клавой и мышью, ну или, на на худой конец, ноутбук. А телефон должен звонить и принимать СМС (от банка, о поступлениях на счет). Впрочем, преамбула превращается в минутку ворчания…

Итак, как же генерировать и читать QR-коды на десктопе или ноутбуке под Windows?

Нашел программу CodeTwo QR Code Desktop Reader & Generator.

Возможности программы

+ Работает полностью оффлайн, не требует соединение с Интернетом.
+ Небольшие системные требования (см. ниже)
+ Бесплатная, как для домашнего, так и для коммерческого использования
+ Может генерировать QR-коды
+ Имеется возможность читать и декодировать QR-код с экрана (захват экрана с выделением области)
+ Из буфера обмена
+ С изображений с веб-камеры
+ Из файла

— Не OpenSource

Системные требования

+ Поддерживает версии Windows от Windows XP SP3 до Windows 10
+ Поддерживаются как x86 (32-разрядные), так и 64-разрядные версии ОС
+ Размер на диске 2,5 Мб

Необходим .NET Framework 4.0 или выше.

Скачать

Сайт разработчика

Официальная страница (краткая инструкция на буржуйском, скрины, ссылка на скачивание)

Копия установщика на mega.nz

Установка аналога apt-get в Cygwin

У Cygwin есть свой пакетный менеджер, встроенный, собственно, в установщик. Однако, если надо установить что-нибудь небольшое, то выходить из консоли и запускать инсталлятор лень. Можно установить аналог убунтовского apt-get.

1. В установщике сначала устанавливаем wget, если раньше этого не сделали (в окне мастера со списком пакетов выбираем Full [1]) и в поиске[2] вводим wget. Выбираем последнюю версию в столбце New[3].

Картинка в полном разрешении

2. Скачиваем скрипт apt-cyg (в консоли Cygwin):

wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

3. Даем скрипту права на исполнение:

chmod +x apt-cyg

4. Перемещаем скрипт в /usr/local/bin:

mv apt-cyg /usr/local/bin

Пользоваться apt-cyg так же, как убунтовским apt-get. Все зависимости от устанавливаемого пакета подтянутся автоматически. Например, можно установить mc:

apt-cyg install mc

После того, как скрипт отработает, запускаем:

mc

ФАНФАРЫ!

Ошибка при установке Сygwin, Cygwin не видит списка репозиториев.

И не может скачать пакеты с репозиториев.

Преамбула

Оказался я тут недавно на одной винде, без доступа к Linux, а Linux-овое окружение срочно потребовалось, погуглил, решил поставить Cygwin, а не тут-то было. Скачиваю инсталлятор, запускаю, а он не видит списка зеркал:

При попытке добавить зеркало вручную, скачивания все равно не происходит.

Как пофиксить

1. Заходим в Свойства браузера (Свойства: Интернет) через Панель управления или Пуск —> Выполнить (Win+R) и вводим и запускаем inetcpl.cpl.
2. Переключаемся на вкладку Дополнительно
3. Ставим галочки напротив пунктов Использовать TLS 1.1 и Использовать TLS 1.2

Готово

Список зеркал:

Список пакетов для установки:

ЗЫ. Пишут, что на некоторых системах не помогает, точнее помогает только после обновления IE и установки кумулятивного обновления для Windows 7 (копия)

Оффлайновые (кумулятивные) обновления для Windows.

Лично я все обновления винды всегда отрубал, отчасти из-за того, что оно часто бывало не совсем лицензионным (от откровенно крякнутых, до кастомных сборок), а отчасти от того, что обновления от M$ «не все одинаково полезны». Некоторые крашили систему, причем внезапно, некоторые делались исключительно для какой-нибудь гадости, как принудительная вакцинация переход с Win7 на Win10

Но, обновления бывают и полезными, от всяких затычек дыр, типа которых (дыр) использовали вирусы WannaCry и NotPetya, до обновления корневых сертификатов.

Так как же получить полезные обновления, но пропустить вредные?

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

Не реклама. Я сам уже 3 года пользуюсь его пакетами обновлений на нескольких десятках машин, где установлены Windows 7 и даже Windows XP. Сбоев после обновления Simplix еще не бывало.

И еще это бывает полезно там, где интернета нет, или он совсем медленный. Скачал заранее и припер на флешке.

Для XP он уже не формирует пакет обновлений, т.к. обновления окончательно перестал выпускать сам M$, но последний пакет хранится на сайте. Без зазрения совести, его можно назвать Windows XP SP4! Дембельский аккорд уходящей ОС.

Ссылки

Сайт Simplix
Кумулятивные обновления для Windows XP SP3 (новые выходить перестали)
Кумулятивные обновления Windows 7 (обновляются)

Запись из BAT/CMD-файла в STDERR.

Небольшой пост из серии спрашивали — отвечаем.

Примечание: это работает только в версиях Windows, где командный процессор умеет в расширенную обработку команд, т.е., начиная с Windows 2000.

Расширенная обработка команд по умолчанию включена в Windows Server 2003/Windows XP, но может быть отключена через Реестр, так что для совместимости лучше ее включить явно:

SetLocal EnableExtensions

Команда echo по умолчанию выводит на STDOUT, т.е., например, команда:

echo I write to STDOUT

Выведет текст I write to STDOUT на STDOUT, да на мне капитанская фуражка 🙂

Для вывода текста на STDERR необходимо использовать переопределение вывода, синтаксис которого похож на аналогичный синтаксис в Linux, т.е. в современных Windows тоже есть три канала ввода/вывода, с номерами, аналогичными Linux, т.е.:

1STDOUT
2STDERR
3STDIN

Стандартные потоки

Переопределяется вывод на STDERR конструкцией 1>&2, т.е. команда

echo I write to STDERR 1>&2

Выведет текст I write to STDERR на STDERR.

BAT-файл writeto.bat целиком:

@echo off
SetLocal EnableExtensions
rem This BAT file write in stdout and stderr

echo I write to STDOUT
echo I write to STDERR 1>&2

Проверка

Для проверки работы BAT-файла можно создать тестовый BAT-файл, который будет вызывать файл writeto.bat и перенаправлять потоки вывода STDOUT и STDERR в текстовые файлы.
Содержимое файла writeto_test.bat:

@echo off
SetLocal EnableExtensions
rem This BAT file test for writeto.bat

call writeto.bat 1>_stdout.txt 2>_stderr.txt

Данный файл надо создать в каталоге с writeto.bat.

После запуска файла writeto_test.bat в текущем каталоге появятся файлы _stdout.txt и _stderr.txt со следующим содержимым:

_stdout.txt:
	I write to STDOUT

_stderr.txt:
	I write to STDERR

ФАНФАРЫ!

Пример на GitHub

CMD/BAT, содержит ли переменная число.

Преамбула

В BAT-файлах нет типа переменных, тип разрешается в каждом конкретном случае. Впрочем, это так в большинстве командных языков, в линуксовом bash тоже нельзя явно задать тип переменной.

При этом, процессор cmd не считает числом:

— Числа в системах счисления отличных от десятичной.
— Числа с плавающей точкой (действительные, дробные).
— Если есть лидирующие нули, например 00150 не распознается как число. Хотя с этим мы поборемся.

Числами считаются только целые числа в диапазоне -2147483648..2147483647.

Так как же проверить, число в переменной BAT/CMD-файла или нет? Будем разбираться.

Оставим числа в системах счисления, отличных от десятичной, а также дробные числа. Нормальных механизмов работы в BAT/CMD с ними нет, так что и не будем усложнять.

Решение

1. Включаем расширенный режим (копия) обработки команд. В Windows, начиная с XP SP2 он включен по умолчанию, но лучше явно прописывать для совместимости:

SetLocal EnableExtensions

2. Проверка на пустую переменную. Процессор BAT/CMD считает неинициализированную или пустую переменную пустой, и не задает ей значение 0, если она используется в качестве численной переменной. Так что изначально надо проверять, не пуста ли переменная.
В тестовом примере значение передается в параметре командной строки, его и проверим, а потом запишем значение во внутреннюю переменную скрипта:

rem test if no or void parameter (variable)
if "%~1" == "" (
	echo No arguments. Use  "%~n0%~x0  <test pattern>"
	exit /b 1
)

set INP=%~1

%~n0%~x0 — при расширенной обработке команд %~n достает из переменной, в данном случае переменной %0 имя файла, %~x расширение с точкой. %0 — переменная, содержащая путь к BAT/CMD-файлу

3. Боремся с лидирующими нолями. Данная команда их удалит:

for /f "tokens=* delims=0" %%a in ("%INP%") do set INP=%%a

4. Эта команда сохранит, например 000100, превратив его в 100, но удалит 0 или 000..., так что если переменная после операции оказалась пустой, значит она содержала 0, надо его восстановить, дабы далее избежать ошибок:

if "%INP%" == "" (
set INP=0
)

5. Число или строка. Теперь можно определить, число или строка в переменной, произведя над ней арифметическое действие не изменяющее значение, например, умножение на 1. Сделать это можно с помощью команды set /a. Остается сравнить полученный результат с оригиналом. Если результат операции не равен оригиналу, то в переменной не число, а строка, т.к. результат арифметической операции над строкой всегда будет равен 0:

rem number or not number
set /a "TINP=INP*1"
if NOT %TINP% == %INP% (
	echo Not number!
	exit /b 2
)

6. Положительное или отрицательное число. Далее остается только сравнить числа с 0 с помощью оператора IF и операций сравнения:

Операнд сравнения Описание
EQU Равно
NEQ Не равно
LSS Меньше
LEQ Меньше или равно
GTR Больше
GEQ Больше или равно

rem number type
if %INP% GEQ 0 (
	echo Positive integer
	exit /b 0
)
if %INP% LSS 0 (
	echo Negative integer
	exit /b 0
)

Скрипт целиком

На GitHub

Браузеры для Pentium II и Pentium III (под Windows XP)

В комментарии принесли проблему. Оказывается, более-менее современные браузеры, даже поддерживающие Windows XP не могут запускаться на Pentium II/III и аналогах, т.к. не могут работать без инструкций SSE2. Впрочем, там же в комментариях и решение нашлось:

Версия для Pentium II и Windows XP

Palemoon Firefox 26.5.0 IA-32 Portable

Версия для Pentium III/AthlonXP

Palemoon Firefox 26.5.0 SSE Portable

В общем, пусть тут лежит. Мало ли пригодится.

Pinball Space Cadet, легендарный Пинболл из Windows XP.

Как установить в Windows 7-10.

Преамбула

Пинболл в старых версиях винды действительно был прикольной залипалкой, но в Windows 7 он пропал, причем по довольно смешной причине. Игрушку для M$ писали какие-то сторонние инди-разработчики, и в их исходниках хренженеры M$ не смогли разобраться, во всяком случае, так гласит сетевая легенда. Но позалипать хочется, а нету.

Ну хуй с ним, посоны, я создал, точнее, выдрал из Windows XP.

Работает как в Windows 7 x86 и x64,так и в Windows 10

Скачать инсталлятор с Mega.NZ
Исходный код инсталлятора на NSIS

BAT/CMD. Задержка (тайм-аут), пауза, аналог команды sleep Linux в DOS/Windows

Преамбула

Почему-то Вовчик Воротов еще со времен DOS не мог в командный процессор добавить встроенную команду sleep <секунд>, которая обеспечивает паузу в скрипте BAT/CMD, как это делается в том же bash. Но есть насколько решений.

Использование утилиты CHOICE.

Совместимость: командные процессоры, начиная с DOS 6.00, включая все версии Windows.

Утилита CHOICE.EXE изначально предназначена для запроса ответа пользователя (Да/нет), например, вызов команды

choice /M "Request Text"

где,
"Request Text" — текст вопроса

отобразит в консоли следующее:

Request Text [Y,N]?

Пользователь должен будет нажать клавишу Y или N, код возврата можно будет отследить в BAT-скрипте в переменной %ERRORLEVEL%, Y1 N2.

Однако, можно сделать из команды CHOICE задержку в скрипте, используя следующий синтаксис:

choice /T [секунд] /D [любой_символ] >nul

где,
/T [секунд] — включить задержку на [секунд] секунд.
/D [любой_символ] — ответ по умолчанию (без него не будет работать параметр /T).
>nul — отправить вывод сообщения команды в >nul, дабы не загрязнять вывод скрипта.

Например:

choice /T 1 /D y >nul

установит задержку в одну секунду.

+ Максимально совместимая команда, начиная с DOS 6.00.
— Не является встроенной командой, может отсутствовать в сборках Windows/DOS или образах Windows PE/загрузочных образах DOS
— Команда может спровоцировать зависание скрипта на неопределенный срок, если скрипт был вызван в определенных условиях, когда командный процессор cmd.exe был вызван иным приложением Windows, выполняющим перехват STDOUT консоли.

Справка по команде

Команда TIMEOUT

Совместимость: Windows 7 и выше.

Синтаксис:

timeout /T [секунд]
или
timeout [секунд]

где,
[секунд] — время в секундах.

+ К Windows 7 Вовчик Воротов таки озаботился командой, позволяющей делать стандартную задержку в BAT-скриптах.
— Нет в более ранних версиях Windows и DOS
— Если BAT-файл запущен в приложении, перехватывающем STDOUT (консольный вывод), могут случиться необоснованные глюки.
— Не является встроенной командой, может отсутствовать в сборках Windows или образах Windows PE

Пример:

timeout /T 1 >nul

Справка по команде

Команда WAITFOR

Совместимость: Windows 7 Professional и выше.

Вообще эта команда предназначена для другого, она отправляет или ожидает системного сообщения. Примерно того же, чем являются системные сообщения в Linux, например SIGTERM и SIGKILL, хотя и весьма условно — в Windows они устроены несколько по-другому. Если программе указать заведомо несуществующее системное сообщение и время ожидания — программа сработает как пауза в BAT/CMD скрипте:

waitfor /T [время] [сообщение(строка)] 1>nul 2>nul

где,

/T [время][время] время ожидания, секунд.
[сообщение(строка)] — можно использовать любую случайную строку, не совпадающую с известными системными сообщениями.
1>nul — перенаправление стандартного потока вывода (STDOUT) в устройство nul.
2>nul — перенаправление стандартного потока ошибок (STDERR) в устройство nul.
Два последних переопределения используются для того, чтобы не замусоривать вывод скрипта.

Пример (скрипт будет ожидать 1 секунду):

waitfor /T 1 zhzhz 1>nul 2>nul

+ Не вызывает зависаний при перехвате консольного вывода скрипта внешним приложением
— Нет в более ранних версиях Windows/DOS
— Не является встроенной командой, может отсутствовать в сборках Windows или образах Windows PE

Справка по команде

Нестандартное использование команды ping

Совместимость: DOS, с установленными программами поддержки сети, все версии Windows

ping на locallhost можно использовать, как команду для задержки в BAT-файле. Хотя, этот способ не рекомендуется использовать, т.к. время задержки может отличаться в зависимости от количества отправленных пакетов, «железа» компьютера или версии ОС.

Пример:

ping -n 3 127.0.0.1 >nul

127.0.0.1 — IP-адрес localhost

-n 3, т.е. 3 пакета отправленные на localhost дают примерное время ожидания в 1 секунду на Windows 7, на ноутбуке HP Pavilion

+ Есть во всех версиях Windows/DOS где есть стандартная поддержка сети от MS
+ При перехвате STDOUT не глючит
— Время задержки определяется весьма приблизительно.

Внешние утилиты

Самостоятельных реализаций sleep/timeout написана вагон и маленькая тележка. Например, одну из них можно скачать на GitHub:

sleep (console application)

Запуск:

sleep <секунд>

Пример:

sleep 1 >nul

+ Сбоев не обнаружено
+ Совместимость: Все версии Windows x86/x64
+ Имеются исходники, можно пересобрать под DOS при наличии компилятора Freepascal.
— Внешняя нестандартная утилита, придется таскать вместе с BAT/CMD файлом.

Впрочем, таких утилит много, все имеют свои плюсы и минусы. Выбирайте под конкретную задачу нужный вам способ.

CMD/BAT, генерация случайных чисел.

Применимо к линейке ОС Windows NT, начиная, как минимум с Windows 2000, x86 и x64 версий[прим. ред.]

Командный процессор Windows (CMD) содержит встроенную переменную %RANDOM%, которую можно использовать для генерации случайных чисел.

%RANDOM% генерирует случайное целое число от 0 до 32767 (включительно).

echo %RANDOM%

Диапазон генерируемых чисел можно уменьшить с помощью небольшого лайфхака, команда SET не только устанавливает значение пользовательских переменных окружения, но и может производить простейшие арифметические операции.

Например, можно сгенерировать случайные числа в диапазоне от 1 до 500:

@ECHO OFF
SET /a _rand=(%RANDOM%*500/32768)+1
ECHO Random number: %_rand%

Если попытаться сгенерировать случайные числа больше чем 32767, то это приведет к проблемам, хотя с виду все будет работать. Например, если в вышеприведенном коде заменить 500 на 65536, то это приведет к генерации последовательности «случайных» чисел, которая будет состоять только из нечетных чисел.

Распределение возвращаемых чисел определяется, как диапазоном, так и количеством итераций генерации случайных чисел.

Например, если вы генерируете числа в диапазоне от 1 до 100 то в среднем:

— При генерации 10 чисел, примерно 6% будут дублироваться
— При генерации 100 чисел, этот процент вырастет до 63, т.е. 63% сгенерированных чисел будут дубликатами, т.е. совпадать с одним или несколькими из остальных 99 чисел.
— Если сгенерировать 1000 чисел, почти все будут дублироваться, т.к. есть только 100 возможных значений.

Случайные и псевдослучайные числа

Псевдослучайная последовательность не является истинно случайной и определяется небольшим набором начальных условий.

В случае %RANDOM%, начальное значение зависит от текущего времени (системного таймера), когда произошел запуск экземпляра командного процессора. Это может создать проблему, когда проходит примерно одно и то же время перед обращением к переменной %RANDOM% и запуском самого скрипта, одновременно со стартом экземпляра командного процессора. Возвращаемое число будет находиться в небольшом предсказуемом диапазоне.

В качестве примера создайте файл numbers.cmd, содержащий следующий код:

@Echo off
Echo %RANDOM%

И запустите его следующим образом:

cmd /c numbers.cmd
cmd /c numbers.cmd
cmd /c numbers.cmd
...

Раймонд Чен из MSFT подробно описывает, почему %RANDOM% в cmd.exe не такой уж случайный.

Йоханнес Баагё опубликовал сравнение лучших алгоритмов генерации случайных чисел на javascript. Самый быстрый из них — Alea(), копия которого представлена по ссылкам ниже или в источнике.

Эта реализация имеет ряд преимуществ: можно генерировать числа большие, чем позволяет %RANDOM%, можно быстро сгенерировать много чисел, можно создавать псевдослучайные последовательности, т.е., результаты станут повторяемы, если вы вызовете скрипт с указанием одного и того же начального числа, т.е сами зададите начальные условия.

Впрочем, не стоит использовать эти «случайные числа» для чего-то серьезного, в винде так и нет нормального штатного генератора случайных чисел, и изначально не было. В худшем случае стоит пользоваться библиотеками криптопровайдера, в лучшем — аппаратным генератором. (прим. ред.)

Скрипт random.js на PasteBin
Источник

Перевел Серёга «PTZSnake jr.» Неклюев
Специально для Tolik-punkoff.com
Редактор: Leha Silent

Все права идут нахуй.

CMD/BAT Переопределение (redirect) STDERR (стандартного потока вывода ошибок) куда-нибудь.

Ну, например, в файл или в nul.

Не знал, что в Windows работает линуксовый синтаксис:

someprogramm.exe parameters 1>nul 2>nul

Или так:

someprogramm.exe parameters >nul 2>nul

1> или > — стандартный поток вывода (STDOUT)
2> — стандартный поток вывода ошибок (STDERR)

Причем, если бы в грозу не вырубило интернет, хрен бы узнал. Никогда не надо было, а тут понадобилось. Психанул и написал как в Линуксе, ВНЕЗАПНО, сработало.

Вовчик Воротов даже куски синтаксиса у никсоидов тырил?

Включение, отключение и настройка режима гибернации в Windows 7 и выше.

Сон, гибернация, ждущий режим и все все все. Немного терминов и определений.

Сон (Windows Vista и выше) или Ждущий режим (Windows XP) — временное завершение работы ОС без выгрузки оперативной памяти в файл и закрытия приложений, т.е. ОС приостанавливает активную работу, снижает нагрузку на процессор, «гасит» ненужную периферию (монитор, жесткие диски, и даже останавливает вентиляторы, один фиг нагрузка на процессор минимальна). Выход из этого режима и возвращение к работе происходит по нажатию клавиш клавиатуры или кнопки питания на системном блоке ATX (они все сейчас ATX), или по прерыванию от мыши (можно изменить в настройках) или модема (у кого есть аналоговый модем? :)) .

Минусы этого режима:
— При отключении питания все несохраненные данные пропадут, т.к. фактически произойдет отключение питания у работающей машины, просто со сниженным до минимума энергопотреблением.
— При использовании внешних средств полного шифрования ОС, например, таких, как VeraCrypt и TrueCrypt, компьютер останется незащищенным до конца.

Плюсы:
+ Быстрый переход и выход из данного режима
+ Экономия места на системном диске, т.к. ОС не нужно держать на диске файл, размер которого равен размеру оперативной памяти, собственно, для выгрузки в него содержимого оперативной памяти.

Гибернация (Windows Vista и выше) или Сон (Windows XP) — завершение работы ОС и компьютера с предварительной выгрузкой оперативной памяти в файл hiberfil.sys с последующим полным отключением питания ПК. При повторном включении, ОС загружает содержимое файла hiberfil.sys обратно в оперативную память и продолжает работу.

Минусы:
— Требуется дополнительное место на диске.
— Если злоумышленнику удастся получить доступ к hiberfil.sys, то возможна атака даже на систему, защищенную TrueCrypt и VeraCrypt (вроде как не всех версий). Пример атаки (копия)
— Более долгое время для перехода в рабочее состояние, по сравнению с режимом сна.

Плюсы:
+ В случае отключения электропитания в режиме гибернации, данные не потеряются.
+ Если системный диск зашифрован TrueCrypt/VeraCrypt потребуется ввод пароля

Гибридный спящий режим (присутствует, начиная с Windows Vista, включен по умолчанию) — сочетание первого и второго режима, электропитание компьютера не отключается полностью, а «гасится» только ненужная периферия, при этом оперативная память сбрасывается в hiberfil.sys. Восстанавливает информацию из оперативной памяти, если во время спящего режима возник сбой питания (да, работает, я проверил). Сочетает плюсы и минусы предыдущих режимов.

Включение режима гибернации.

Если «Сон» по умолчанию присутствует в меню «Завершение работы», то пункт «Гибернация» приходится включать вручную.

1. Проверяем, включен ли режим гибернации (или гибридный спящий режим), для этого открываем диск C: и смотрим, присутствует ли в корне диска файл hiberfil.sys. Файл является скрытым, потому включаем отображение скрытых файлов (ну или смотрим через Far Manager, например).

Если файла нет, как на иллюстрации, значит, режим гибернации полностью отключен. Если файл есть, переходим к пункту 5.

2. Запускаем командную строку от имени администратора (Пуск —> Все программы —> Стандартные)

3. Выполняем команду:

powercfg /h on

4. Перезагружаем компьютер.

Файл hiberfil.sys появился.

Далее под катом…

Полное отключение режима гибернации и гибридного спящего режима.

Если необходимо полностью отключить режим гибернации и гибридный спящий режим, а также удалить файл hiberfil.sys:

1. Нужно запустить командную строку в режиме администратора.
2. В командной строке ввести команду:

powercfg /h off

3. Параноики могут после этого запустить очистку свободного места на диске в любой программе безопасного удаления файлов, например, в Eraser’е.

Почему не происходит переход в спящий режим/режим гибернации

Наиболее частая причина состоит в том, что этому может мешать какая-то программа:

— Просто зависшее приложение.
— Программа, производящая активные действия с файловой системой (архиватор, архивирующий/разархивирующий файлы, файловый менеджер, копирующий файл).
— Программы, способные запретить переход в спящий режим/режим гибернации: будильники, таймеры, торрент-клиенты, «качалки», и даже некоторые вирусы и скрытые майнеры.

Сброс пароля Windows 7 при наличии доступа к системе.

Иными словами, как можно сбросить пароль Windows 7, если доступ к рабочему столу есть, а старый пароль неизвестен. Это можно в каком-нибудь зловредном скрипте использовать, но у меня цели были мирные — товарищ купил ноутбук б/у, который ему отдали, не сообщив пароль от учетной записи пользователя, а я ВНЕЗАПНО, зашел в Панель управления и увидел, что на учетку установлен пароль. По-хорошему бы вообще винду надо было переустановить, но сделал пока так. Повезло, что машина не ушла в гибернацию или в сон, и не выключилась, иначе пришлось бы ебаться с загрузочной флэшкой, выкачивать какой-нибудь ломатель паролей.

Внимание! Способ не сработает, если доступа к десктопу нет, и если запись Администратора тоже запаролена, и вы не знаете пароля и от нее.

1. Запускаем командную строку от имени Администратора (Пуск —> Все программы —> Командная строка, кликаем по ярлыку правой кнопкой мыши и выбираем Запуск от имени администратора)

2. В командной строке вводим:

net user <username> <new_password>,

где:
<username> — имя пользователя
<new_password> — новый пароль

Например:

net user paulzovatel 666999

Имя пользователя не чувствительно к регистру символов, а пароль чувствителен.