Как сделать отображение SUBST постоянным после перезагрузки?

Вопрос или проблема

Есть ли в Windows (XP или более поздней версии) встроенный способ создания постоянных привязок дисков, подобных тем, которые создает команда SUBST? Я нашел сторонний инструмент psubst. Есть ли способ сделать это без сторонних инструментов?

Ну, Википедия упоминает:

C:\>SUBST /?
Ассоциирует путь с буквой диска.

SUBST [диск1: [диск2:]путь]
SUBST диск1: /D

  диск1:        Указывает виртуальный диск, к которому вы хотите назначить путь.
  [диск2:]путь  Указывает физический диск и путь, которые вы хотите назначить
                 виртуальному диску.
  /D             Удаляет подмененный (виртуальный) диск.

Введите SUBST без параметров, чтобы отобразить список текущих виртуальных дисков.

Таким образом, вы можете связывать пути с буквами дисков, используя subst. Программное обеспечение Persistent SUBST command (psubst) кажется весьма удобным, и они предлагают решение запускать его при старте:

https://github.com/ildar-shaimordanov/psubst#Inconstancy

Непостоянство

Однако перезагрузка системы разрушает виртуальный диск. Что делать? Диск можно создать после запуска. Но что делать, когда диск нужен на ранних этапах загрузки? Например, для запуска сервисов? Существуют системные возможности для запуска виртуального диска из системного реестра:

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"Z:"="\\??\\C:\\Documents and Settings\\All Users\\Shared Documents"

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

В Windows вы можете запустить редактор реестра следующим образом:

  1. Пуск » Выполнить… (или нажмите Win+R)
  2. Введите: regedit
  3. В Windows Vista и выше появится UAC, нажмите “Да”.

Установка в HKEY_CURRENT_USER имеет преимущество, так как разные пользователи могут иметь свои настройки. Я предпочитаю оставлять настройки в пространстве пользователя, если только системный сервис не зависит от устройства.

REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"F Drive"="subst F: D:\\mount\\db"
"G Drive"="subst G: D:\\mount\\log"

Источник: http://networkadminkb.com/KB/a446/how-to-use-drive-letters-mount-points-the-same-disk-drive.aspx

На странице, на которую вы ссылались, есть ответ. Вам не нужен сторонний инструмент, вы можете сделать это с помощью простой записи в реестре, как указано на той странице.

Создайте текстовый файл с именем ‘mapdrive.reg’ с следующим содержимым:

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"Z:"="\\??\\C:\\Documents and Settings\\All Users\\Shared Documents" 

Затем просто дважды щелкните на нем, чтобы настроить, сторонние инструменты не нужны.

Я нашел это, потому что искал улучшение для своих скриптов subst при загрузке – они работали нормально, но иногда выполнялись после того, как папки не успевали загрузиться, потому что мой диск еще не был присоединен.

Сначала я редактировал реестр, но не смог заставить его работать. Тем не менее, я наткнулся на эту альтернативу, которая, хотя и не использует subst, тем не менее отвечает на мой вопрос: “Как сделать привязки SUBST постоянными при перезагрузке?” Не используйте subst… (вставьте соответствующий ‘computerName’ и ‘pathName’):

net use u: "\\computerName\c$\pathName" /persistent:yes

Я адаптировал это из предложения Хэнка Арнольда на данной дискуссии по привязке локальных дисков. Я предполагал, что \\myComputerName\c может сработать, но я не знал, что нужно применять $.

Перед тем как попробовать команду “net use”, попробуйте подключиться к

\\computerName\c$

чтобы убедиться, что у вас правильное ‘computerName’.

Создайте пакетный файл в вашей папке “Автозагрузка”, который выполняет все SUBST, которые вы хотите сделать.

Я продолжаю ответ davr, потому что любые файлы, удаленные с подключенного диска, удаляются навсегда вместо того, чтобы попадать в Корзину. Этот REG файл основан на информации, собранной из этой статьи TechNet, где обсуждается, как включить Корзину. Пример связывает виртуальный диск Q с папкой “OneDrive – Test” и включает Корзину на диске Q. Измените пути и имена в соответствии с вашей ситуацией.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"Q:"="\\??\\C:\\Users\\Tony\\OneDrive - Test"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"RelativePath"="Q:\\"
"Category"=dword:00000004
"Name"="Q_Mapped_OneDrive"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"MaxCapacity"=dword:0000c7eb
"NukeOnDelete"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"RelativePath"="Q:\\"
"Category"=dword:00000004
"Name"="Q_Mapped_OneDrive"

[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\BitBucket\KnownFolder\{9147E464-33A6-48E2-A3C9-361EFD417DEF}]
"MaxCapacity"=dword:0000c7eb
"NukeOnDelete"=dword:00000000

Если у вас только один такой подключенный диск, вы можете обойтись без GUID {9147E464-33A6-48E2-A3C9-361EFD417DEF}. Если у вас несколько подключенных дисков, каждый должен соответствовать GUID, сгенерированному вашим любимым генератором GUID.

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

Проверьте PSubst версию 3 в пакетном файле

https://github.com/cyberponk/psubst

Совместимо с Windows 7, Windows 8, Windows 10, Windows Server 2012

Примечание:
Эта работа не имеет намерения умалять оригинального автора и существовала только из-за реальной необходимости, следующим образом:

  • Как администратор сети, у меня постоянная необходимость в SUBST для сетевых дисков и работе с разными сетевыми пользователями.

  • Поскольку не каждый является экспертом Windows, я решил, что автоматическое повышение администраторских прав с обработкой ошибок будет полезно, основываясь на комментариях, которые я читал в интернете.

  • Поскольку некоторые люди испытывали трудности с порядком аргументов, я решил, что будет лучше, если скрипт будет работать с аргументами в любом порядке.

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

Вот два примера использования reg.exe для добавления необходимой записи в подраздел реестра Run в хранилище HKEY_CURRENT_USER. Эти примеры могут быть адаптированы по мере необходимости. Откройте неэскалированное окно cmd от имени текущего пользователя и вставьте адаптированную строку.

Самый простой случай:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Map I" /t REG_SZ /d "subst I: \"C:\path\to\folder\"" /f

Где аргумент пути SUBST содержит встроенную переменную окружения:

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Map J" /t REG_EXPAND_SZ /d "subst J: \"^%DROPBOX_HOME^%\Notes\"" /f

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

Я знаю, что вопрос был задан более 10 лет назад, и последнее сообщение было дано около полугода назад… Тем не менее, я чувствую необходимость обновить эту тему своим ответом, потому что инструмент psubst здесь упоминается (в версии от @cyberponk). Он был обновлен до версии 3.0.1 и улучшен для постоянства дисков с повышенными привилегиями простым способом.

https://github.com/ildar-shaimordanov/psubst

Ссылка выше ведет к репозиторию оригинального инструмента.

SUBST полезен для создания короткого пути к набору файлов. Однако, если вам не нужен доступ на исходном месте, то виртуальный диск может быть полезной альтернативой.

Я привык иметь отдельный диск D:\ для своих проектов, но разделы вызывают проблемы, когда один из них заполняется, а в другом еще достаточно места. Виртуальный диск .vhdx может быть настроен так, чтобы занимать место только при записи данных на него.

  1. Откройте элемент управления “Управление дисками”
  2. Выберите диск, на котором вы хотите разместить образ
  3. Выберите “Создать VHD” из меню действий
  4. Введите местоположение, размер и параметры для диска
  5. Щелкните правой кнопкой мыши на новом “Диске” (серое место слева) и инициализируйте диск
  6. Щелкните правой кнопкой мыши на нераспределенном пространстве и добавьте новый том
  7. Выберите размер, формат и букву диска

Как и SUBST, это дает вам диск с буквой, то есть D:. Однако, в отличие от SUBST, это самостоятельный диск, обладающий полным набором функций Windows, например, удаленные файлы попадают в корзину. Он также автоматически монтируется при каждой загрузке. Недостаток в том, что вы не можете получить доступ к файлам из исходного местоположения.

Я остановился на этом решении. Оно более полное, чем аналогичное. Создайте пакетный файл в вашей папке “Автозагрузка”, который выполняет все SUBST, которые вы хотите сделать.

  • Создайте пакетный файл с командами subst
  • Нажмите Windows + R, чтобы открыть ‘выполнить’
  • Введите shell:startup
  • Создайте ярлык в папке “Автозагрузка” для пакетного файла.

Лучше не копировать файлы в папку “Автозагрузка”, чтобы они случайно не были удалены, если вы очистите папку “Автозагрузка”.

Ответ или решение

Существует несколько методов, позволяющих сделать привязки, созданные с помощью команды SUBST, постоянными на Windows (XP и более поздние версии) без использования сторонних инструментов. Рассмотрим наиболее эффективные из них.

Способ 1: Использование реестра

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

  1. Откройте редактор реестра, выполнив команду regedit через меню «Пуск» или выполнив Win + R.
  2. Перейдите в раздел:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
  3. Создайте новую строковую запись (тип REG_SZ) и назовите её, например, Z:. В качестве данных укажите полный путь к каталогу, который хотите привязать (обратите внимание, что обратные слэши нужно удвоить):
    "\\??\\C:\\Путь\\к\\каталогу"

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"Z:"="\\??\\C:\\Путь\\к\\каталогу"

Затем дважды щелкните на этом файле, чтобы применить изменения.

Способ 2: Команда NET USE

Если вы хотите сделать привязку к сетевому диску, можно использовать команду NET USE. Выполните в командной строке:

net use Z: "\\computerName\c$\pathName" /persistent:yes

Где Z: — это буква диска, а \\computerName\c$\pathName — сетевой путь. Не забудьте проверить, что у вас есть доступ к указанному пути.

Способ 3: Скрипты для запуска при загрузке

Вы можете создать пакетный файл (batch file), который будет выполнять необходимые команды SUBST, и добавить его в папку «Автозагрузка»:

  1. Создайте файл с расширением .bat и добавьте в него команды SUBST:
    subst F: "D:\mount\db"
    subst G: "D:\mount\log"
  2. Нажмите Win + R и введите shell:startup, чтобы открыть папку автозагрузки.
  3. Создайте ярлык на ваш пакетный файл в этой папке.

Способ 4: Использование других решений

Если вам нужно более сложное решение или дополнительные функции, вы можете рассмотреть использование виртуальных дисков. Например, с помощью диска VHD (Virtual Hard Disk), который автоматически монтируется при старте системы:

  1. Откройте «Управление дисками» (diskmgmt.msc).
  2. Создайте новый виртуальный диск и присвойте ему букву.
  3. Убедитесь, что он инициализирован и отформатирован.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...