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

1319
Wes

Я заметил, что я не могу использовать \\?\Volume\path\to\targetили \Device\HarddiskVolume5\path\to\targetкак ярлык цели - это не будет работать. Это работает только тогда, когда я использую буквы дисков в абсолютных путях. Я не хочу использовать буквы дисков или относительные пути.

Могу ли я указать цель для ярлыка, который не сломается при изменении букв диска? Или я могу создать точку повторной обработки NTFS (например, точку соединения) для этого?

2
Это невозможно. DavidPostill 9 лет назад 2
Вы имеете в виду, что нет альтернатив, которые могли бы наилучшим образом достичь цели, даже программно, и вы не можете предложить мне лучшую практику, которая лучше всего ее достигает? Wes 9 лет назад 0
По определению вы не можете делать то, что хотите. DavidPostill 9 лет назад 0
Я уверен, что кто-то может написать программу для восстановления неработающих ссылок, но, насколько мне известно, никто не имеет. Но это все еще было бы возможно. Я уверен, что это возможно, возможно, нецелесообразно. Wes 9 лет назад 0
«Я не хочу использовать буквы дисков или относительные пути» - невозможно. DavidPostill 9 лет назад 1
«Я хочу иметь возможность указать цель, которая не прервет ярлык при смене букв диска». это невозможно. DavidPostill 9 лет назад 0
«написать программу для исправления неработающих ссылок» настолько непрактично, что это невозможно - как вы узнаете, куда переместилась цель неработающей ссылки (целью может быть URL-адрес, который может находиться где-нибудь в киберпространстве)? DavidPostill 9 лет назад 0
Вместо того, чтобы публиковать практически идентичные вопросы, было бы гораздо лучше, если бы вы отредактировали свой вопрос, чтобы он был более понятным. Слишком много удаленных вопросов может привести к попаданию в один из системных элементов управления, который либо ограничит, либо запретит вам публиковать дополнительные вопросы. Если вы чувствуете, что ваши предыдущие вопросы были низкого качества, то кнопка «улучшить» или «изменить» под вопросом позволила бы вам сделать их более качественными. Mokubai 9 лет назад 2
Лучшее, что я могу придумать для достижения своей цели, - это символическая ссылка, которая указывает на букву диска, так что при изменении буквы диска я могу указать ссылку на новую букву диска. Или, может быть, сетевой диск, который отображается на букву диска. Это не было бы плохим предложением, хотя я бы предпочел что-то более надежное, но это были бы приличные ответы. Wes 9 лет назад 0
@Mokubai Я удалил второй вопрос, потому что он был помечен как дубликат. Я удалил свой первый вопрос, потому что это был плохой вопрос, и никто больше не читал его, потому что он был старым. Мне пришлось перефразировать этот вопрос, иначе он был бы помечен как дубликат моего второго вопроса. Wes 9 лет назад 0
Связанный: http://superuser.com/questions/307955/how-do-windows-nt-based-operating-systems-address-devices bwDraco 9 лет назад 0
@DragonLord Я знаком с этой нотацией, но, похоже, вы не сможете использовать эти нотации при указании ярлыков для целей. Wes 9 лет назад 0
Почему меняется буква диска (если вы не используете съемный носитель)? LDC3 9 лет назад 0
@ LDC3 Я управляю парой дюжин дисков, и они автоматически подключаются, и я бы не стал их отслеживать. Wes 9 лет назад 0
Когда диски смонтированы, могут ли они выполнить пакетный файл с диска? Пакетный файл может установить переменную среды, которая используется для установки ссылки (или пути). LDC3 9 лет назад 0

2 ответа на вопрос

2
DavidPostill

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

Я не хочу использовать буквы дисков или относительные пути

Тип целей, которые вы хотите использовать ( \?\Volume\path\to\targetили \Device\HarddiskVolume5\path\to\target), не являются допустимыми целями для ярлыка.

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


Элементы предпочтений ярлыка позволяют настроить ярлык для объекта файловой системы (например, файла, папки, диска, общего ресурса или компьютера), объекта оболочки (например, принтера, элемента рабочего стола или элемента панели управления) или URL (например, веб-страница или FTP-сайт).

Источник Настройка элемента ярлыка


Или я могу создать точку повторной обработки NTFS (например, точку соединения) для этого?

Вы можете использовать mklink для создания символической ссылки в форме\\?\Volume\path\to\target.txt

c: md \test cd \test mklink testlink \\?\Volume\test\test.txt 

Теперь тест каталога содержит символическую ссылку (которая в моем случае указывает на файл f:\test\test.txtна внешнем диске).

C:\test>dir Volume in drive C has no label. Volume Serial Number is C8D0-DF1E  Directory of C:\test  29/03/2015 23:24 <DIR> . 29/03/2015 23:24 <DIR> .. 29/03/2015 23:17 <SYMLINK> testlink [\\?\Volume\test\test.txt] 1 File(s) 0 bytes 2 Dir(s) 248,410,976,256 bytes free 

...

C:\test>type testlink this file is test.txt C:\test> 

...

C:\test>type f:\test\test.txt this file is test.txt C:\test> 

Заметка

  • Это работает, только если вы пытаетесь разыменовать ссылку из командной строки, но не пытаетесь получить к ней доступ из интерфейса проводника.

Дальнейшее чтение

Эта ссылка говорит только о ярлыках оболочки; как это применимо к символическим ссылкам или соединениям на уровне файловой системы? grawity 9 лет назад 0
@DavidPostill Символьные ссылки или подключенные сетевые диски фактически выполнят то, что я ищу. Я имею в виду, что вы меняете буквы на томах, тогда все, что вам нужно сделать, это указать ссылки на другое письмо. И вы можете использовать эти ссылки в ярлыках. Хотя я надеялся на лучшее решение, чем эти, конечно, лучшее, чем предложение «это невозможно». Wes 9 лет назад 0
@ Grawity Junction был добавлен к вопросу ** после ** я ответил. DavidPostill 9 лет назад 0
@Wes ответ обновлен, чтобы дать решение, используя символическую ссылку DavidPostill 9 лет назад 0
0
hBy2Py

It's a bit of a hack and possibly insecure, but you should be able to set up sharing on the root folder of the drive of interest (sharename floatdrive, say) with appropriate sharing permissions, and then construct all shortcuts/links using networking URL syntax on localhost:

\\localhost\floatdrive\folder\or\file\of\interest.txt 

As long as Windows mounts the drive correctly, perhaps the share name will follow the drive no matter what drive letter it's been assigned. I unfortunately don't have a system on hand at the moment suitable to test this, though.