User 9897074 Ответов: 6

Извлечение пути для exe из файла .lnk


Привет..я хотел бы извлечь целевой путь ярлыка...
есть какая-нибудь помощь?

Что я уже пробовал:

я искал в google, но мне не очень повезло ....

6 Ответов

Рейтинг:
2

User 9897074

извините за то, что я публикую это на вкладке решения..но я не нахожу решение кода ввода в разделе " обычные комментарии"

хорошо, я немного эволюционировал...теперь я работаю с этим:

<pre>  Private Sub pic1_DragDrop(sender As Object, e As DragEventArgs) Handles pic1.DragDrop
        Dim pathy = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        Dim ini As New IniFile(pathy & "\D-OCKT\Pool.ini")
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            Dim filePaths As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
            For Each fileLoc As String In filePaths
                If File.Exists(fileLoc) Then
                    On Error Resume Next
                    Dim shl = New Shell32.Shell()
                    fileLoc = System.IO.Path.GetFullPath(fileLoc)
                    Dim dir = shl.[NameSpace](System.IO.Path.GetDirectoryName(fileLoc))
                    Dim itm = dir.Items().Item(System.IO.Path.GetFileName(fileLoc))
                    Dim lnk = DirectCast(itm.GetLink, Shell32.ShellLinkObject)
                    Dim pat1 = lnk.Target.Path
                    pic1.Image = Drawing.Icon.ExtractAssociatedIcon(pat1).ToBitmap()
                    Dim result As String
                    result = Path.GetFileNameWithoutExtension(pat1)
                    name1.Text = result
                    ini.WriteValue("Slot 1", "Fold", "0")
                    ini.WriteValue("Slot 1", "Fil", "1")
                    ini.WriteValue("Slot 1 ", "Nam", result)
                    ini.WriteValue("Slot 1", "Pat", pat1)
                End If
            Next fileLoc
        End If
    End Sub


мне просто нужно только найти способ, чтобы этот код также работал от истинного files..it сейчас работает, но обрабатывает только ярлыки файлов :S


[no name]

теперь я слепа к этому.он работает, но только с ярлыками.я хочу, чтобы он работал как с ярлыками, так и с собственными файлами..какая-нибудь помощь?!

Рейтинг:
1

Richard MacCutchan

Видеть Интерфейс IShellLink (Windows)[^].


Рейтинг:
0

OriginalGriff

Не все так просто! Начать здесь: [MS-SHLLINK]: Shell Link (.LNK) двоичный формат файла[^] , Который предоставляет вам спецификации формата файла.

Из этого вы должны быть в состоянии прочитать файл и расшифровать, где на самом деле находится цель - но это не будет тривиально!


Рейтинг:
0

Graeme_Grant

В Google Search есть много ответов для вас: c# Extract path for exe from .lnk - поиск в Google[^] ... выберите тот, который лучше всего соответствует вашим потребностям...


Рейтинг:
0

User 9897074

у меня есть этот код:

<pre>   Dim pathy = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        Dim ini As New IniFile(pathy & "\D-OCKT\Pool.ini")
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            Dim filePaths As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
            For Each fileLoc As String In filePaths
                If File.Exists(fileLoc) Then
                    On Error Resume Next
                    pic1.Image = Drawing.Icon.ExtractAssociatedIcon(fileLoc).ToBitmap()
                    Dim fileName As String = fileLoc
                    Dim result As String
                    result = Path.GetFileNameWithoutExtension(fileName)
                    name1.Text = result
                    ini.WriteValue("Slot 1", "Fold", "0")
                    ini.WriteValue("Slot 1", "Fil", "1")
                    ini.WriteValue("Slot 1 ", "Nam", result)
                    ini.WriteValue("Slot 1", "Pat", fileLoc)
                End If
            Next fileLoc
        End If


я хотел бы использовать эту строку:
ini.WriteValue("Slot 1", "Pat", fileLoc)


но вместо "Fileloc", который держит путь для.lin file..я бы хотел, чтобы это был путь к истинному файлу!!!


RedDk

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

Рейтинг:
0

User 9897074

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

<pre>    Private Sub pic1_DragDrop(sender As Object, e As DragEventArgs) Handles pic1.DragDrop
        Dim pathy = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        Dim ini As New IniFile(pathy & "\D-OCKT\Pool.ini")
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
            Dim filePaths As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
            For Each fileLoc As String In filePaths
                If File.Exists(fileLoc) Then
                    On Error Resume Next
                    Dim shl = New Shell32.Shell()
                    fileLoc = System.IO.Path.GetFullPath(fileLoc)
                    Dim dir = shl.[NameSpace](System.IO.Path.GetDirectoryName(fileLoc))
                    Dim itm = dir.Items().Item(System.IO.Path.GetFileName(fileLoc))
                    Dim lnk = DirectCast(itm.GetLink, Shell32.ShellLinkObject)
                    Dim pat1 = lnk.Target.Path
                    If File.Exists(pat1) Then
                        On Error Resume Next
                        pic1.Image = Drawing.Icon.ExtractAssociatedIcon(pat1).ToBitmap()
                        Dim result As String
                        result = Path.GetFileNameWithoutExtension(pat1)
                        name1.Text = result
                        ini.WriteValue("Slot 1", "Fold", "0")
                        ini.WriteValue("Slot 1", "Fil", "1")
                        ini.WriteValue("Slot 1 ", "Nam", result)
                        ini.WriteValue("Slot 1", "Pat", pat1)
                    Else
                        If File.Exists(fileLoc) Then
                            Dim pat2 = fileLoc
                            pic1.Image = Drawing.Icon.ExtractAssociatedIcon(pat2).ToBitmap()
                            Dim result As String
                            result = Path.GetFileNameWithoutExtension(pat2)
                            name1.Text = result
                            ini.WriteValue("Slot 1", "Fold", "0")
                            ini.WriteValue("Slot 1", "Fil", "1")
                            ini.WriteValue("Slot 1 ", "Nam", result)
                            ini.WriteValue("Slot 1", "Pat", pat2)
                        End If
                    End If
                End If
            Next fileLoc
        End If
    End Sub