subst

Z Wikipedii, wolnej encyklopedii

subst – komenda w systemach operacyjnych DOS, IBM OS/2 oraz Microsoft Windows, używana w celu utworzenia substytutu ścieżki na fizycznym lub logicznym dysku udostępnionym jako dysk wirtualny. W przeszłości komenda była używana w celu uwidocznienia ukrytego dysku, co stanowiło prymitywne zabezpieczenie przed nieuprawnionym dostępem na komputerze PC[potrzebny przypis].

Windowsowa komenda subst jest dostępna w systemie Windows 2000 SP4 i późniejszych wersjach pod interpreterem systemowym cmd.exe[1].

Pod Windows NT, subst używa DefineDosDevice() do wytworzenia mapowania dysku wirtualnego.

Niektóre wersje MS-DOS COMMAND.COM wspierają nieudokumentowaną wewnętrzną komendę truename która wyświetla "prawdziwą nazwę" pliku, poprzez obejście komendy subst oraz definicję mapowania systemów plikowych komendą assign, co umożliwia łączenie wielu dysków w jedną strukturę w sposób zbliżony jak ma to miejsce w systemach typu Unix.

Użycie[edytuj | edytuj kod]

Przykład linii poleceń pod systemem Windows XP:

C:\>subst /?
Przypisanie ścieżek do liter napędów dyskowych.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Nazwa napędu wirtualnego który będzie tworzony lub usuwany.
  [drive2:]path  Wskazanie napędu fizycznego wraz ze ścieżką, która stanie się
                 katalogiem głównym w tworzonym napędzie wirtualnym a virtual drive.
  /D             Usuwa substowany (wirtualny) napęd.

POlecenie SUBST bez parametrów jedynie wyświetla listę bieżących napędów wirtualnych.

Dla przykładu, aby zrobić mapowanie głównego katalogu dysku C: na dysk X:, należy użyć polecenia subst X: C:\ w wierszu poleceń. W ten sposób uzyskuje się nowy napęd nazwany X: który powinien się pojawić jako folder wirtualny w Eksploratorze Windows pod ikoną My Computer.

Aby rozłączyć napęd, należy uruchomić poniższą komendę w linii poleceń:

C:\>subst [drive:] /D

Indywidualna nazwa[edytuj | edytuj kod]

Indywidualna nazwa może być przypisana do wirtualnego napędu poprzez użycie opcji menu napędu "Zmień nazwę". Trwałe przypisanie nazwy dla konkretnej litery napędu jest możliwe poprzez odpowiedni wpis do rejestrów:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\M\DefaultLabel\

(DefaultValue) = Twoja nazwa dla napędu

"M" reprezentuje literę napędu dyskowego, dla którego jest przypisywana trwała nazwa.

Należy pamiętać, że nazwa nadana dla napędu wirtualnego za pomocą opisanego sposobu będzie skuteczna wyłącznie wtedy, gdy napęd fizyczny nie będzie miał przypisanej żadnej nazwy. Jeśli napęd fizyczny będzie miał nazwę, zostanie ona użyta w pierwszej kolejności do nazwania tworzonego napędu wirtualnego. Aby temu zapobiec, należy dla napędu fizycznego także nadać nazwę poprzez rejestr. W tym celu należy wykonać czynności:

  1. Usuń nazwę dla napędu fizycznego;
  2. Utwórz właściwe klucze rejestru aby nadać nazwę dla dysku tworzonego poleceniem SUBST;
  3. Utwórz właściwe klucze rejestru aby nadać nazwę dla dysku fizycznego;
  4. Ponownie utwórz dysk SUBST, aby przypisać zdefiniowaną nazwę.

Uodpornienie napędu na reboot[edytuj | edytuj kod]

Zmapowany opisanym sposobem napęd dyskowy jest niedostępny po ponownym starcie systemu, lub po jego restarcie. Jednak jest możliwe poprzez modyfikację rejestru, zmapowanie napędu aby był on widoczny także po restarcie systemu.

Utwórz nowy klucz "String Value" w kluczu: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices

Nazwa powinna wyglądać tak: "X:" gdzie X jest napędem wirtualnym.

Wartość powinna być ścieżką w napędzie fizycznym w formacie: \??\C:\jakiś\katalog
albo: \DosDevices\C:\jakiś\katalog
albo: \Device\Mup\127.0.0.1\C$\jakiś\katalog

Jest dostępne narzędzie, które wykona powyżej opisane zmiany. Należy odwiedzić psubst w celu użycia jednego z narzędzi.

Odwrotnym podejściem do tworzenia napędów wirtualnych jest HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
/*Faktycznie ten klucz rejestru jest odpowiednikiem pliku /etc/fstab w systemach Unix */
Wymieniony klucz definiuje mapowanie napędów dyskowych do konkretnych partycji na urządzeniach fizycznych. Może on być edytowany ręcznie, jednak wyłącznie wtedy kiedy zainstalowany system Windows jest nieaktywny. Dla przykładu jeśli startujemy system z "D:\Windows" wówczas możemy edytować klucz HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices z Windowsa wystartowanego z "C:\Windows". Należy wykonać następujące czynności:

  1. uruchom polecenie: reg load hklm\$system C:\WINDOWS\system32\config\system
  2. uruchom polecenie: regedit.exe
  3. edytuj klucz rejestru HKEY_LOCAL_MACHINE\$system\MountedDevices
    /*który właśnie reprezentuje klucz rejestru HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices z Windowsa zainstalowanego w katalogu "C:\WINDOWS" */
  4. zamknij regedit.exe
  5. uruchom polecenie: reg unload hklm\$system
    /*aby zakończyć procedurę edycji*/

Ograniczenia[edytuj | edytuj kod]

  • Ważne jest by pamiętać o tym, że nie wszystkie procesy Windows potrafią użyć wirtualnych napędów utworzonych opisaną metodą[2].
  • Od wersji Microsoft Windows XP SP2 plik Autorun.inf dostępny na nowym wirtualnym napędzie jest ignorowany, więc AutoRun/AutoPlay nie działa na napędach utworzonych opisanym sposobem. Ponadto przypisanie indywidualnej ikony lub nazwy do wytworzonego napędu wirtualnego poprzez Autorun.inf także nie działa. Zdefiniowana nazwa przypisana do napędu utworzonego za pomocą polecenia Subst jest identyczna, jak nazwa przypisana do napędu fizycznego. Przypisanie nazwy do napędu wirtualnego jest możliwe wyłącznie wtedy, gdy napęd fizyczny nie ma nazwy. Można to sprawdzić / ustawić poleceniem label command).

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]