Больше вопросов
Как указал @Lectrode, если вы попытаетесь запустить команду net session
, когда служба сервера остановлена, вы получите следующее сообщение об ошибке:
The Server service is not started.
More help is available by typing NET HELPMSG 2114
В этом случае переменная %errorLevel%
будет установлена на 2
.
Примечание Служба сервера не запущена в безопасном режиме (с сетью или без нее).
В поисках альтернативы
То, что:
- может быть запущен из коробки в Windows XP и более поздних версиях (32- и 64-разрядных);
- не касается реестра или каких-либо системных файлов / папок;
- работает независимо от локали системы;
- дает правильные результаты даже в безопасном режиме.
Итак, я загрузил виртуальную виртуальную машину Windows XP и начал просматривать список приложений в папке C:\Windows\System32
, пытаясь найти некоторые идеи. После проб и ошибок вот такой грязный (каламбур) подход, который я придумал:
fsutil dirty query %systemdrive% >nul
Команде fsutil dirty
требуются права администратора для запуска, в противном случае произойдет сбой. %systemdrive%
- это переменная среды , которая возвращает букву диска, на котором установлена операционная система. Выход перенаправляется на nul
, поэтому игнорируется. Переменная %errorlevel%
будет установлена на 0
только после успешного выполнения.
Вот что говорится в документации:
Запрашивает или устанавливает грязный бит тома. Если установлен грязный бит тома, autochk автоматически проверяет громкость на наличие ошибок при следующей перезагрузке компьютера.
Синтаксис
fsutil dirty {query | set} <VolumePath>
Параметры
query Queries the specified volume's dirty bit.
set Sets the specified volume's dirty bit.
<VolumePath> Specifies the drive name followed by a colon or GUID.
Примечания
Грязный бит тома указывает, что файловая система может находиться в несогласованном состоянии. Грязный бит может быть установлен, потому что:
- Том в сети, и он имеет значительные изменения.
- Изменения были внесены в том, и компьютер был выключен до того, как изменения были зафиксированы на диске.
- На томе обнаружено повреждение.
Если грязный бит установлен при перезагрузке компьютера, chkdsk запускается, чтобы проверить целостность файловой системы и попытаться исправить любые проблемы с томом.
Примеры * * 1 077
Чтобы запросить грязный бит на диске C, введите:
fsutil dirty query C:
Дальнейшие исследования
Хотя вышеприведенное решение работает с Windows XP и далее, стоит добавить, что Windows 2000 и Windows PE (предустановленная среда) не поставляются с fsutil.exe
, поэтому мы должны прибегнуть к чему-то еще.
Во время моих предыдущих тестов я заметил, что выполнение команды sfc
без каких-либо параметров приведет либо к:
- ошибка, если у вас недостаточно прав;
- список доступных параметров и их использование.
То есть: без параметров, без партии . Идея состоит в том, что мы можем проанализировать вывод и проверить, не получили ли мы что-либо, кроме ошибки:
sfc 2>&1 | find /i "/SCANNOW" >nul
Выход ошибки сначала перенаправляется на стандартный вывод, который затем передается команде find
. На данный момент мы должны искать параметр only , который поддерживается во всех версиях Windows начиная с Windows 2000: /SCANNOW
. В поиске не учитывается регистр, а вывод отбрасывается путем перенаправления его на nul
.
Вот выдержка из документации:
Сканирует и проверяет целостность всех защищенных системных файлов и заменяет неправильные версии правильными версиями.
Примечания
Для запуска sfc.exe .
вы должны войти в систему как член группы администраторов.
Пример использования
Вот несколько примеров вставки и запуска:
Windows XP и более поздние версии
@echo off
call :isAdmin
if %errorlevel% == 0 (
echo Running with admin rights.
) else (
echo Error: Access denied.
)
pause >nul
exit /b
:isAdmin
fsutil dirty query %systemdrive% >nul
exit /b
Windows 2000 / Windows PE
@echo off
call :isAdmin
if %errorlevel% == 0 (
echo Running with admin rights.
) else (
echo Error: Access denied.
)
pause >nul
exit /b
:isAdmin
sfc 2>&1 | find /i "/SCANNOW" >nul
exit /b
Относится к
- Windows 2000
- Windows XP
- Windows Vista
- Windows 7
- Windows 8
- Windows 8.1
---
- Windows PE