Как перенести установленную программу на другой диск без потери настроек и реестровых записей

Перенос установленного программного обеспечения с системного раздела C: на другой логический или физический диск (например, D:) требуется при дефиците свободного места без выполнения полной переустановки. Прямое перемещение папки программы средствами Проводника блокирует ее запуск из-за жесткой привязки абсолютных путей в реестре Windows, службах системы и профилях пользователей. Проблема решается использованием штатных функций ОС Windows 10/11 для UWP-приложений, созданием символических ссылок и соединений NTFS (Junction Point) или коррекцией реестра и конфигурационных файлов.

Экспресс-проверка и подготовка системы

  • Проверка файловой системы: Убедитесь, что целевой диск форматирован в NTFS. Файловые системы FAT32 и exFAT не поддерживают точки соединения (Junction Points) и права доступа ACL. Проверка выполнится командой Win + Rcmdfsutil fsinfo volumeinfo D:.
  • Остановка процессов и служб: Завершите процесс программы в «Диспетчере задач» (Ctrl + Shift + Esc) и остановите связанные службы через Win + Rservices.msc.
  • Проверка прав доступа: Запустите командную строку cmd.exe или PowerShell от имени Администратора для корректной обработки системных вызовов API.
  • Оценка объема диска: Убедитесь в наличии достаточного свободного места на целевом накопителе с помощью утилиты dir D: или системного монитора.

Основные пошаговые методы переноса

Метод 1: Встроенный механизм Windows 10/11 (для UWP и приложений Microsoft Store)

  1. Откройте параметры системы комбинацией клавиш Win + I.
  2. Перейдите по пути: Приложения → Установленные приложения (в Windows 10: Приложения → Приложения и возможности).
  3. Найдите в списке нужную программу, нажмите на иконку с тремя точками сбоку и выберите пункт Переместить (Move).
  4. В выпадающем списке выберите целевой накопитель (например, диск (D:)) и подтвердите операцию нажатием кнопки Переместить.

Метод 2: Создание символических ссылок NTFS (Junction Points) через CLI

  1. Откройте командную строку от имени Администратора: нажмите Win + R, введите cmd, нажмите Ctrl + Shift + Enter.
  2. Скопируйте папку программы со всеми правами доступа и атрибутами на новый диск, выполнив команду:robocopy "C:Program FilesTargetApp" "D:Program FilesTargetApp" /E /COPYALL /XJ
  3. Убедитесь, что файлы успешно скопировались, после чего переименуйте исходную папку на диске C::ren "C:Program FilesTargetApp" "TargetApp_old"
  4. Создайте соединение NTFS (Junction), связывающее старый путь с новым местоположением:mklink /J "C:Program FilesTargetApp" "D:Program FilesTargetApp"
  5. Проверьте работоспособность программы. При успешном запуске удалите резервную папку:rmdir /S /Q "C:Program FilesTargetApp_old"

Метод 3: Полный перенос с правкой реестра и системных служб

  1. Переместите файлы программы из C:Program FilesTargetApp в D:Program FilesTargetApp утилитой robocopy.
  2. Нажмите Win + R, введите regedit и нажмите Enter для открытия Редактора реестра.
  3. Перейдите к ветке реестра: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall.
  4. Найдите подраздел программы и измените строковые параметры InstallLocation, DisplayIcon и UninstallString, заменив букву диска C: на D:.
  5. Проверьте наличие 64-битной ветки при необходимости: HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall и внесите аналогичные правки.
  6. Если программа запускается как служба Windows, обновите путь к бинарному файлу через консоль:sc config "TargetAppService" binPath= "D:Program FilesTargetAppservice.exe"

Сводная таблица параметров и способов связывания

Тип связи / Метод Синтаксис команды / Инструмент Поддержка междискового переноса Влияние на реестр Область применения
Junction Point (/J) mklink /J "Исходный_путь" "Целевой_путь" Да Не требуется правка Папки на NTFS (Win32 классические программы)
Symbolic Link (/D) mklink /D "Исходный_путь" "Целевой_путь" Да (требует прав Admin) Не требуется правка Файлы и папки, сетевые пути (SMB)
Hard Link (/H) mklink /H "Исходный_файл" "Целевой_файл" Нет (только в рамках одного тома) Не требуется правка Отдельные файлы внутри одного раздела
Утилита Robocopy robocopy /E /COPYALL /XJ Да Не влияет (копирует данные) Точный перенос структуры и прав ACL
Штатный перенос UWP Параметры → Приложения Да Автоматическая коррекция Приложения из Microsoft Store / UWP

Нестандартные проблемы и их решение

Критическое предупреждение: Запрещается удалять системные точки соединения в C:Users или C:WindowsSystem32 без предварительного создания точки восстановления системы. Это может привести к сбою загрузки ОС.

Ошибка «Access is Denied» (Запрещено в доступе) при создании mklink

Возникает при нехватке прав Администратора или при блокировке папки активным процессом/антивирусом.

  • Перезагрузите ОС в «Безопасном режиме» через Win + Rmsconfig → вкладка Загрузка → чекбокс Безопасный режим (Safe boot).
  • Снимите блокировку с папки, сбросив владельца объекта в консоли:takeown /F "C:Program FilesTargetApp" /R /Aicacls "C:Program FilesTargetApp" /grant Администраторы:F /T

Файлы конфигурации с жестко прописанными путями (Hardcoded Paths)

Приложения могут хранить пользовательские профили и настройки в %AppData% или %LocalAppData% в файлах форматов .json, .xml, .ini, содержащих абсолютные пути вида C:Program Files....

  1. Откройте текстовый редактор Notepad++ с поддержкой поиска по нескольким файлам.
  2. Нажмите комбинацию клавиш Ctrl + Shift + F.
  3. В поле Найти введите старый путь: C:Program FilesTargetApp.
  4. В поле Заменить на введите новый путь: D:Program FilesTargetApp.
  5. В поле Папка укажите путь к профилю программы: %AppData%TargetApp и нажмите Заменить в файлах.

Исправление зарегистрированных COM-компонентов и DLL

Если после переноса программа выдает ошибки о незарегистрированных библиотеках .dll или .ocx, перерегистрируйте их вручную через утилиту regsvr32:

  1. Запустите командную строку от имени Администратора.
  2. Выполните перерегистрацию библиотеки по новому адресу:regsvr32 /i "D:Program FilesTargetAppcomponentslibrary.dll"
  3. Для массовой регистрации всех динамических библиотек в перенесенном каталоге выполните пакетный цикл в cmd.exe:for %i in ("D:\Program Files\TargetApp\*.dll") do regsvr32 /s "%i"

Перенос драйверов уровня ядра и служб с прямым путем к образу

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

  • Нажмите Win + R, введите regedit и откройте ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  • Найдите подраздел службы целевого приложения (например, TargetAppFilter).
  • Дважды кликните по параметру ImagePath (тип REG_EXPAND_SZ) и замените исходный путь C:\Program Files\TargetApp\driver.sys на целевой D:\Program Files\TargetApp\driver.sys или \??\D:\Program Files\TargetApp\driver.sys.
  • Принудительно перезапустите службу через консоль управления:net stop TargetAppFilter && net start TargetAppFilter

Устранение циклических ссылок при резервном копировании (AppLoop)

Точки соединения NTFS (Junction Points) могут вызывать рекурсивное зацикливание антивирусных сканеров и встроенных служб резервного копирования Windows (VSS / Shadow Copy):

  • Установите атрибут системного репарсинга, чтобы исключить папку из индексации поисковых служб:attrib +s +h "C:\Program Files\TargetApp"
  • Запустите утилиту управления файловой системой и заблокируйте наследование повторного сканирования:fsutil reparsepoint query "C:\Program Files\TargetApp"
  • При использовании специализированных утилит резервного копирования (Acronis, Veeam) всегда добавляйте флаг пропуска символических ссылок --exclude-reparse-points или параметр исключения /XJ в скриптах автоматизации, чтобы предотвратить дублирование физического объема накопителя.


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