Как включить поддержку длинных путей в windows 7

Длинные пути в Windows 10

Практически каждый пользователь Windows рано или поздно сталкивается с ошибкой ″слишком длинный путь″ (path too long). Ошибка эта возникает при работе с файлами или папками, у которых полный путь превышает значение в 260 символов.

Напомню, что полный путь включает в себя букву диска, двоеточие, обратный слэш, имена компонентов (файл, директория) разделенные слешем и завершающий пустой символ (NUL). Выглядит полный путь примерно так:

Соответственно, если сумма всех компонентов пути больше 260 символов, то путь считается слишком длинным. Большинство приложений Windows не умеют работать с такими путями и при обращении к файлу\папке выдадут примерно такое сообщение:

Что интересно, значение в 260 символов обусловлено значением MAX_PATH Win32 API. У файловой системы NTFS максимальная длина пути ″немного″ больше и составляет 32767 символов. Для обхода ограничений Win32 API некоторые приложения используют формат UNC, указывая абсолютный путь с префиксом \\?\, например так:

Групповые политики

Первым делом открываем редактор локальных групповых политик, для чего жмем клавиши Win+R и выполняем команду gpedit.msc.

Нужная нам политика находится в разделе Конфигурация компьютера\Административные шаблоны\Система\Файловая система (Computer configuration\Administrative templates\System\Filesystem) и называется Включить длинные пути Win32 (Enable Win32 long paths).

Для активации поддержки длинных путей надо перевести политику в состояние «Включено».

Реестр

Для включения поддержки длинных путей через реестр необходимо найти в разделе HKLM\System\CurrentControlSet\Control\FileSystem параметр с именем LongPathEnabled и задать его значение равным 1.

Эту операцию можно произвести с помощью PowerShell, командой:

В обоих случаях потребуется перезагрузить компьютер. После перезагрузки изменения вступят в силу и для путей будет действовать только ограничение файловой системы NTFS (32767 символа), превысить которое вам навряд ли удастся. Однако это вовсе не значит, что можно расслабится. В некоторых приложениях проверка MAX_PATH заложена в коде, поэтому по возможности лучше не превышать это ограничение.

Дополнение

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

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

″Эта функция не готова для включения в Windows Explorer. Вам нужно подождать, пока Microsoft не включит ее в Explorer, или использовать сторонний инструмент управления файлами, который совместим с длинными путями. ″

Это было сказано еще в 2016 году. Но, судя по всему, разработчики на данную проблему просто забили. На данный момент в версии 1903 проводник все так же не поддерживает длинные пути файлов. Вот так

RPC блокируется файерволом (брандмауэром)

Убедитесь, что RPC трафик между компьютерами не блокируется файерволом. Если у вас используется Windows Defender Firewall with Advanced Security, нужно проверить или создать правила, разрешающие RPC трафик. Одно правило, разрешающее доступ к службе RPC Endpoint Mapper по порту TCP/135; второе должно разрешать доступ к RPC службе, которая вам нужна по динамическим RPC портам (RPC Dynamic Ports). Правила нужно создать для всех трех сетевых профилей: Domain, Private и Public.

Вы можете вручную создать эти правила, как описано в статьей Create Inbound Rules to Support RPC — https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-firewall/create-inbound-rules-to-support-rpc). В домене можно распространить правила брандмауэра с помощью GPO или использовать PowerShell скрипты.

Проверьте с клиента, что на RPC сервере доступен 135 порт TCP (должен слушаться службой RPC Endpoint Mapper). Можно проверить доступность порта из PowerShell:

Если RPC порт доступен, должен появится ответ TcpTestSucceeded:True.

Вы можете получить список конечных точек RPC (сервисов и приложений), которые зарегистрированы на удаленном компьютере и анонсируются службой RPC Endpoint Mapper с помощью утилиту PortQry

В выводе PortQry можно найти номер порта, назначенный нужной вам службе RPC (она запущена?) и проверить, что этот порт не блокируется с клиента.

Если у вас используется сторонний файервол/антивирус, убедитесь, что он не блокирует RPC трафик и умеет корректно обрабатывать трафик динамических RPC портов.

Почему Windows 10 не видит сетевые папки

Если папка не активна, убедитесь, что доступ открыт «для всех». А также проверьте правильность настроек системы безопасности и брандмауэра. В «десятке» проблемы могут возникать и после обновлений. Что включить или отключить в такой ситуации:

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

Периодически подобные проблемы возникают и из-за протокола SMB, который поддерживает «Обозреватель сети», контролирующий все работающие компьютеры.

В последних версиях ОС SMB1 автоматически не подключается, а обновиться до SMB2 не всегда удается. В таком случае единственный выход — запустить вручную первый вариант SMB.

Как временно исправить проблему с файлами?

Легкое Исправление

Если вам повезет, вы получите ошибку и точно знаете, какое имя файла вызывает проблему. Или, по крайней мере, где найти файл. Может быть, у вас есть имя файла, которое выглядит примерно так:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

Понятно, кто в этом случае виновник. Найдите файл в проводнике Windows или в проводнике, как он называется в Windows 10, нажмите один раз на него, нажмите F2, чтобы переименовать его, и измените это глупое имя файла на более разумное. Задача решена.

Менее простые исправления

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

Следующие решения помогут вам. Их несложно сделать.

Перемещение, удаление или копирование файлов или каталогов с помощью PowerShell Иногда вы получаете сообщение об ошибке при попытке переместить, удалить или скопировать каталоги, где количество символов для пути к файлу превышает 260.

Обратите внимание, что слова каталог и папка являются взаимозаменяемыми. Мы будем использовать «каталог» в будущем

Следующие командлеты PowerShell также можно использовать для файлов.

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

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.

Давайте предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?

Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:\Users\guymc — ваш пользовательский каталог.

Каталог с именем This находится в каталоге Documents. Чтобы перейти в каталог Documents, мы используем команду .

Вы увидите быстрое изменение текущего каталога на C:\Users\guymc\Documents. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.

Копирование каталога с использованием Copy-Item

Мы хотим скопировать каталог This и его содержимое в ThatNewFolder. Давайте используем команду PowerShell Copy-Item с параметрами -Destination и -Recurse.

-Destination сообщает PowerShell, где мы хотим, чтобы копия находилась. -Recurse говорит PowerShell скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.

Copy-Item This -Destination ThatNewFolder -Recurse

Переместить каталог с помощью Move-Item

Допустим, мы хотим переместить каталог This, а также все каталоги и файлы в нем, в ThatNewFolder. Перемещение не оставляет оригинал на месте.

Мы можем использовать команду PowerShell Move-Item с параметрами -Path и -Destination. -Path определяет элемент, который мы хотим переместить, и -Destination сообщает PowerShell, где мы хотим его получить.

Команда поместит это в ThatNewFolder. Он также будет перемещать все, что находится внутри этого каталога. Move-Item может использоваться для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.

Move-Item -Path This -Destination ThatNewFolder

Чтобы убедиться, что это работает, используйте команду , чтобы войти в ThatNewFolder. Затем используйте команду для вывода списка каталогов в ThatNewFolder. Вы увидите, что этот каталог находится там.

Удалить каталог с помощью Remove-Item

Если мы хотим удалить этот каталог и все в нем, мы используем команду Remove-Item.

Командлет Remove-Item обладает некоторой встроенной безопасностью, которая затрудняет удаление каталога с содержимым внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse, чтобы заставить его удалять все внутри, и -Force, чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.

Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно.

Remove-Item This -Recurse -Force

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

Вот и все

Существуют и другие способы обхода длинных имен файлов и путей к файлам, но то, что мы здесь рассмотрели, — это самые простые и эффективные методы.

Узнаем версию Linux

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

Способ 1: Inxi

Inxi поможет в два счета собрать все сведения о системе, однако предустановлена она лишь в Linux Mint. Но это не беда, абсолютно любой пользователь может за несколько секунд установить ее из официального репозитория.

Установка утилиты и сама работа с ней будет происходить в «Терминале» — аналог «Командной строки» в Windows. Поэтому, прежде чем начинать перечислять все возможные вариации проверки информации о системе с использованием «Терминала», стоит сделать ремарку и рассказать, как открыть этот самый «Терминал». Для этого необходимо нажать сочетание клавиш CTRL + ALT + T или совершить поиск по системе с поисковым запросом «Terminal» (без кавычек).

Установка Inxi

  1. Пропишите следующую команду в «Терминал» и нажмите Enter, чтобы установить утилиту Inxi:

  2. После этого у вас попросят ввести пароль, который вы указывали при установке ОС.
  3. В процессе загрузки и установки Inxi вам необходимо будет дать на это свое согласие, введя символ «Д» и нажав Enter.

После нажатия строки в «Терминале» побегут вверх — это значит что начался процесс установки. В итоге вам необходимо дождаться его окончания. Определить это вы можете по появившемуся вашему никнейму и имени ПК.

Проверка версии

После установки вы можете проверить информацию о системе, введя следующую команду:

После этого на экран выведется следующая информация:

  • Host — имя компьютера;
  • Kernel — ядро системы и ее разрядность;
  • Desktop — графическая оболочка системы и ее версия;
  • Distro — имя дистрибутива и его версия.

Однако это далеко не вся информация, которую может предоставить утилита Inxi. Чтобы узнать все сведения, впишите команду:

В результате будет отображена абсолютно вся информация.

Способ 2: Терминал

В отличие от способа, про который будет рассказано в завершении, у этого есть одно неоспоримое преимущество — инструкция общая для всех дистрибутивов. Однако, если пользователь только-только пришел с Windows и еще не знает, что такое «Терминал», ему будет сложно адаптироваться. Но обо всем по порядку.

Если вам необходимо определить версию установленного дистрибутива Linux, то для этого существует немало команд. Сейчас будут разобраны самые популярные из них.

  1. Если интересует только информация о дистрибутиве без лишних подробностей, то лучше воспользоваться командой:

    после введения которой на экране появится информация о версии.

Если нужны более детальные сведения — введите команду:

Она выведет название, версию и кодовое имя дистрибутива.

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

Эта команда покажет абсолютно всю информацию о релизе дистрибутива.

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

Способ 3: Специальный инструмент

Данный способ отлично подойдет тем пользователям, которые только начали знакомиться с ОС на базе Linux и еще с опаской относятся к «Терминалу», так как в нем отсутствует графический интерфейс. Однако в этом методе есть и свои недостатки. Так, с помощью него нельзя узнать все подробности о системе сразу.

  1. Итак, чтобы узнать информацию о системе, вам необходимо войти в ее параметры. На разных дистрибутивах это выполняется по-разному. Так, в Ubuntu вам необходимо нажать левой кнопкой мыши (ЛКМ) по иконке «Параметры системы» на панели задач.

    Если после установки ОС вы вносили в нее какие-то коррективы и данный значок пропал с панели, то можно легко отыскать данную утилиту, произведя поиск по системе. Просто откройте меню «Пуск» и пропишите в поисковую строку «Параметры системы».

После входа в параметры системы вам необходимо отыскать в разделе «Система» значок «Сведения о системе» в Ubuntu или «Подробности» в Linux Mint, после чего нажать на него.

После этого появится окно, в котором будет находиться информация об установленной системе. В зависимости от используемой ОС, их обилие может разниться. Так, в Ubuntu указана лишь версия дистрибутива (1), используемая графика (2) и разрядность системы (3).

В Linux Mint информации больше:

Вот мы и узнали версию Линукс, используя для этого графический интерфейс системы. Стоит повториться, сказав, что расположение элементов в разных ОС может различаться, однако суть заключается в одном: отыскать настройки системы, в которых открыть сведения о ней.

Ошибка «unable to connect to socket: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. (10061)»

При использовании команды kex в Kali Linux (Win-KeX) может возникнуть ошибка:

unable to connect to socket: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. (10061)

В командной строке выводится:

TigerVNC Viewer 32-bit v1.10.80
Built on: 2020-06-15 22:33
Copyright (C) 1999-2020 TigerVNC Team and many others (see README.rst)
See https://www.tigervnc.org for information on TigerVNC.

Fri Sep 11 06:41:39 2020
 DecodeManager: Detected 12 CPU core(s)
 DecodeManager: Creating 4 decoder thread(s)

Fri Sep 11 06:41:41 2020
 CConn:       unable to connect to socket: Подключение не
              установлено, т.к. конечный
              компьютер отверг запрос на
              подключение. (10061)

Для исправления этой ошибки нажмите Ctrl+c.

Затем введите команду

kex stop

Эта команда может вывести что-то вроде следующего:

Killing Win-KeX process ID 1618... which was already dead
Cleaning stale pidfile '/home/mial/.vnc/HackWare-MiAl.localdomain:1.pid'!
Cleaning stale x11 lock '/tmp/.X1-lock'!
Cleaning stale x11 lock '/tmp/.X11-unix/X1'!

Вновь попробуйте открыть графический интерфейс:

kex

На этот раз всё должно заработать:

Причина ошибки до конца не ясна — возможно, дело в неудачном старте VNC сервера или процесса Win-KeX, на это указывает строка «Win-KeX process ID 1618… which was already dead», то есть процесс уже мёртвый.

Командой kex stop мы принудительно останавливаем Win-KeX, который при следующем запуске работает нормально.

Основные команды PuTTY

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

ls — предназначена для вывода файлов, содержит в себе набор команд:

  • ls -la — выводит различные документы и показывает права доступа, включая имя создателя и владельца;
  • ls -lha — также выводит файлы, но показывает размер файла в байтах;
  • ls -lha | less — используется для постраничного просмотра документов.

cd — необходима для перемещения между директориями, например, cd перенаправляет пользователя в указанную папку, cd../ перемещает в верхний уровень, cd ~ открывает корневую папку.

echo — позволяет перемещать текст в файл. Например, если нам требуется создать новый текстовый документ или добавить текст в уже созданный файл, достаточно ввести «echo Привет, мир! >> new.txt».

sudo — наиболее используемая команда, означающая «SuperUser Do». Она позволяет выполнять любые команды от имени администратора.

df — дает возможность увидеть доступное дисковое пространство в каждом из разделов операционной системы. Синтаксис: df .

mv — используются для переименования файлов и перемещения их в другую директорию. Синтаксис: mv .

rm — если нужно удалить файлы или директорию целиком, то используйте эту команду. Синтаксис: rm .

cp — для копирования файлов и целых директорий воспользуйтесь этой строчкой. Синтаксис: cp .

mc — предназначена для запуска файлового менеджера Midnight Commander, который позволяет работать с файлами по FTP внутри консольного окна.

cat — наиболее популярная команда в Linux, позволяющая считывать данные из файлов и выводить их содержимое. Наиболее простой способ отображения содержимого в командной строке. Синтаксис: cat .

mkdir — позволяет создать одну или несколько директорий с указанным именем. Например, mkdir mdir1 mdir2 mdir3 добавит сразу 3 директории.

chmod — изменяет права доступа к файлам и каталогам. Синтаксис: chmod .

pwd — при первом запуске терминала мы оказываемся в домашнем каталоге пользователя. Если вдруг каталог был изменен, то проверить это можно с помощью данной команды.

touch — используется для создания любого типа файлов: от пустого txt до пустого zip. Синтаксис: touch .

man и —help — нужны для того, чтобы узнать информацию о команде и о том, как ее можно использовать (man). Например, «man cat» покажет доступную информацию о команде cat. Ввод имени команды и аргумента помогает показать, каким образом можно использовать команду, например, cd –help.

locate — предназначена для поиска файла в системе Linux.

Это была лишь небольшая часть команд, которые можно использовать при подключении по SSH. Если вы только начинаете изучать основы администрирования серверов, то этого списка будет достаточно.

Настройка сети из командной строки с помощью netsh

Для настройки сетевых параметров сервера при помощи командной строки Windows, воспользуемся командой netsh.

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

В нашем случае это Ethernet0.

Чтобы изменить IP-адрес, маску подсети и шлюз по умолчанию выполните следующую команду

Пример команды:

Формат команды для настройки основного DNS-сервера:

Например:

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

Например:

На этом настройка IP параметров сетевой карты сервера завершена. Чтобы проверить правильность сделанных настроек воспользуйтесь командой:

Нюансы длинных путей в приложениях

Есть один нюанс. Этот новый параметр (имеется ввиду та политика и ключ реестра) не обязательно будет работать со всеми существующими приложениями, но он будет работать с большинством. В частности, любые современные приложения должны работать нормально, как и все 64-битные приложения. Старые 32-разрядные приложения должны быть применимы для работы, что на самом деле просто означает, что разработчик указал в файле манифеста приложения, что приложение поддерживает более длинные пути. Большинство популярных 32-битных приложений не должно вызывать проблем. Тем не менее, вы ничем не рискуете, пробуя настройку. Если приложение не работает, единственное, что произойдет, это то, что оно не сможет открывать или сохранять файлы, сохраненные в местах, где полный путь превышает 260 символов.

Если вы разработчик, то чтобы ваше приложение имело возможность работать с длинными путями Windows, в манифесте обязательно указывайте следующие настройки:

<application > <windowsSettings> <longPathAware >true</longPathAware> </windowsSettings> </application>

IV. Часто задаваемые вопросы по теме статьи (FAQ)

Не работает терминальный сервер в Windows 10

Если у вас изначально не заработал терминальный сервер на windows 10 и количество rdp подключений ограничено одним. Либо если у вас после обновление сломался терминальный доступ, то давайте разбираться, что с этим делать.

Для начала запустите утилиту RDPConf.exe и посмотрите ее вывод.

Значение listener state  намекает на то, что у нас проблемы и rdp wrapper не работает. Проблема тут в том, что практически под каждую версию Windows 10 нужен свой файл конфигурации rdpwrap.ini. Так как автор давно забросил свою программу, автоматически эти конфигурации не обновляются. Их нужно либо писать самому, если понимаешь, как именно, либо искать где-то в интернете. Проще всего посмотреть в обсуждении проблем в репозитории на github https://github.com/stascorp/rdpwrap/issues.

Для того, чтобы на моей версии windows 10 заработал терминальный сервер, я пошел в указанный выше репозиторий и нашел там файл конфигурации под свою версию системы. Я взял содержимое этого файла и добавил его в существующий файл C:\Program Files\RDP Wrapper\rdpwrap.ini в самый конец.

После этого запустил еще раз RDPConf.exe.

Статус изменился на . Теперь нужно перезагрузить компьютер. После этого запустите утилиту RDPCheck.exe и убедитесь, что можно подключиться второй учетной записью к компьютеру.

Как починить rdpwrap после обновления windows

Если вы нигде не можете найти файл конфигурации rdpwrap.ini под вашу версию системы, то можно попробовать сделать следующий трюк. В некоторых случаях это помогает. По крайней мере у меня так иногда получалось.

Вам нужно найти рабочую конфигурацию под максимально близкую к вам версию. Далее просто в текстовом редакторе поменяйте указанную там версию на свою. Если разница в версиях не сильно большая, может помочь. Я видел в issues на гитхабе информацию о том, что получалось сразу же после поломки терминального доступа после очередного обновления, отредактировать конфиг под новую версию и все снова продолжало работать.

Так же в одном из обсуждений на github была предложена утилита с автоматическим обновлением rdpwrap.ini. Называется Automatic RDP Wrapper installer and updater — https://github.com/stascorp/rdpwrap/pull/859. Описание и инструкция по использованию есть внутри архива. Судя по отзывам, штука неплохая, работает. Если кратко, то пользоваться так:

  1. Скачиваем архив
  2. Распаковываем в Program Files/RDP Wrapper
  3. От имени администратора запускаем Program Files/RDP Wrapper/autoupdate.bat
  4. Проверяем конфигурацию через RDPConf.exe и пробуем подключаться.

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

Является ли создание сервера терминалов из Windows 10 нарушением лицензии?

Однозначно, да. У Microsoft есть отдельный продукт и отдельная программа лицензирования для работе в терминале. И все это стоит немалых денег. Так что создавая терминал из windows 10 вы точно нарушаете условия лицензионного соглашения.

Автор RDP Wrapper забросил свою программу?

Судя по всему, да. Обновлений давно не было. Меняются только конфигурационные файлы rdpwrap.ini, которые обновляет сообщество. Сама программа при этом не обновляется.

Можно ли не обновлять систему, чтобы не сломать терминальный доступ?

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: