Weitere Themen
Wie von @Lectrode erwähnt, können Sie das Programm net session
während der Serverdienst angehalten ist, erhalten Sie die folgende Fehlermeldung:
The Server service is not started.
More help is available by typing NET HELPMSG 2114
In diesem Fall ist die %errorLevel%
wird die Variable auf 2
.
Hinweis Der Serverdienst wird im abgesicherten Modus (mit oder ohne Netzwerk) nicht gestartet.
Auf der Suche nach einer Alternative
Etwas, das:
- kann sofort unter Windows XP und höher (32 und 64 Bit) ausgeführt werden;
- berührt weder die Registrierung noch eine Systemdatei/einen Systemordner;
- funktioniert unabhängig vom Gebietsschema des Systems;
- liefert auch im abgesicherten Modus korrekte Ergebnisse.
Ich habe also eine virtuelle Maschine mit Windows XP gebootet und angefangen, durch die Liste der Anwendungen im Fenster C:\Windows\System32
Ordner, um ein paar Ideen zu bekommen. Nach vielen Versuchen und Irrtümern ist dies die schmutzig (Wortspiel beabsichtigt) Ansatz, den ich mir ausgedacht habe:
fsutil dirty query %systemdrive% >nul
En fsutil dirty
erfordert zur Ausführung Administratorrechte und schlägt andernfalls fehl. %systemdrive%
es un Umgebungsvariable der den Laufwerksbuchstaben zurückgibt, auf dem das Betriebssystem installiert ist. Die Ausgabe wird umgeleitet nach nul
und wird daher ignoriert. Die %errorlevel%
wird die Variable auf 0
nur bei erfolgreicher Ausführung.
Das steht in der Dokumentation:
Fragt das Dirty Bit eines Datenträgers ab oder setzt es. Wenn das Dirty Bit eines Datenträgers gesetzt ist, autochk prüft das Volume beim nächsten Neustart des Computers automatisch auf Fehler.
Syntax
fsutil dirty {query | set} <VolumePath>
Parameter
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.
Bemerkungen
Das Dirty Bit eines Datenträgers zeigt an, dass sich das Dateisystem möglicherweise in einem inkonsistenten Zustand befindet. Das Dirty Bit kann gesetzt werden, weil:
- Der Band ist online, und es gibt noch Änderungen.
- Es wurden Änderungen am Volume vorgenommen und der Computer wurde heruntergefahren, bevor die Änderungen auf dem Datenträger gespeichert wurden.
- Auf dem Datenträger wurde eine Beschädigung festgestellt.
Wenn das Dirty Bit beim Neustart des Computers gesetzt ist, chkdsk läuft, um die Integrität des Dateisystems zu überprüfen und zu versuchen, etwaige Probleme mit dem Volume zu beheben.
Beispiele
Um das Dirty Bit auf Laufwerk C abzufragen, geben Sie ein:
fsutil dirty query C:
Weitere Forschung
Während die oben beschriebene Lösung ab Windows XP funktioniert, ist es wichtig hinzuzufügen, dass Windows 2000 und Windows PE (Preinstalled Environment) nicht mit fsutil.exe
also müssen wir auf etwas anderes zurückgreifen.
Bei meinen früheren Tests habe ich festgestellt, dass die Ausführung der sfc
Befehl ohne Parameter würde entweder zu:
- eine Fehlermeldung, wenn Sie nicht genügend Berechtigungen haben;
- eine Liste der verfügbaren Parameter und ihrer Verwendung.
Das heißt: keine Parameter, keine Partei . Die Idee ist, dass wir die Ausgabe parsen und prüfen können, ob wir etwas anderes als einen Fehler erhalten haben:
sfc 2>&1 | find /i "/SCANNOW" >nul
Die Fehlerausgabe wird zunächst auf die Standardausgabe umgeleitet, die dann an den find
Befehl. An diesem Punkt müssen wir nach dem nur Parameter, der unterstützt in allen Windows-Versionen seit Windows 2000: /SCANNOW
. Bei der Suche wird die Groß- und Kleinschreibung nicht berücksichtigt, und die Ausgabe wird verworfen, indem sie an nul
.
Hier ist ein Auszug aus der Dokumentation:
Scannt und prüft die Integrität aller geschützten Systemdateien und ersetzt fehlerhafte Versionen durch korrekte Versionen.
Bemerkungen
Sie müssen als Mitglied der Gruppe "Administratoren" angemeldet sein, um das Programm sfc.exe .
Verwendungsbeispiele
Hier sind einige Beispiele für das Einfügen und Ausführen:
Windows XP und höher
@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
Gilt für
-
Windows 2000
-
Windows XP
-
Windows Vista
-
Windows 7
-
Windows 8
-
Windows 8.1
---
-
Windows PE