c #, как решить заголовок файла * .lnk? - PullRequest
2 голосов
/ 29 апреля 2009

Я хочу получить название ярлыка, а не имя файла, не описание, а заголовок. как получить?

Я научился определять его целевой путь отсюда, Как решить .lnk в c #

но я не нашел способа получить его название.


(источник: ggpht.com )


(источник: ggpht.com )

Ответы [ 6 ]

2 голосов
/ 30 апреля 2009

Похоже, вы пытаетесь получить заголовок файла, на который указывает ссылка, как предлагает JRL.

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

Если это где-то еще, это может быть Расширенное свойство файла. Есть некоторый исходный код, который может помочь с получением этой информации: Расширенные свойства файла

Если по какой-то причине находится внутри *. 1014 * файла * .lnk, я рекомендую обратиться к Спецификации ярлыков Windows , чтобы получить информацию о смещении и тому подобное о местоположении этих данных. *

1 голос
/ 02 августа 2009

В последней версии пакета кода вы можете использовать API системы свойств:

(все 670+ свойств в системе доступны с использованием простых методов доступа к свойствам)

http://code.msdn.microsoft.com/WindowsAPICodePack

Я знаю, что ваша текущая потребность - это только ограниченный заголовок lnk-файлов. Используя приведенную выше библиотеку, пример кода может выглядеть следующим образом:

ShellLink myLink = ShellObject.FromParsingName ("c: \ somepath \ myLink.lnk");

string title = myLink.Properties.System.Title.Value;

// Это то, на что он указывает ... string target = myLink.Properties.System.TargetParsingPath.Value;

1 голос
/ 30 апреля 2009

В каталоге ярлыков находится скрытый файл Desktop.ini, в записях файла Desktop.ini отображается информация о строках ярлыков.

Пример файла Desktop.ini:

 [LocalizedFileNames]
Windows Update.lnk=@%SystemRoot%\system32\wucltux.dll,-1
Default Programs.lnk=@%SystemRoot%\system32\sud.dll,-1
0 голосов
/ 29 апреля 2009

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

0 голосов
/ 29 апреля 2009

Пожалуйста, укажите "название". Единственные атрибуты, которые улучшают звучание, - это имя файла ярлыка, имя файла цели и данные описания файла .lnk.

0 голосов
/ 29 апреля 2009

Оглядываясь на создание ярлыков, похоже, что есть много прыжков через обручи с объектами сценариев. Но я что-то упустил? Если у вас есть путь к ярлыку, имя должно быть именно тем, которое вы найдете в пути, а не какой-либо атрибут, который вы должны искать.

    Dim f As FileInfo = New FileInfo("C:\Name of shortcut.lnk")
    Dim title As String = f.Name.Replace(".lnk", String.Empty)
...