Mögliche Duplizieren:
Get target of shortcut folderWie bekomme ich den Pfadnamen von einer Dateiverknüpfung? Ausnahme Erste
Zum Beispiel in C:\TEMP\
habe ich eine Verknüpfung mit dem Namen test.dll
die Verknüpfung wird an den Dateinamen führen test.dll
Ich will bekommen Von der Verknüpfung nur der Pfadname zu der Datei selbst. Also, ich rufe diese Funktion in einer anderen rekursiven Funktion auf und lege in dieser Funktion jedes Mal ein anderes Verzeichnis von meiner Festplatte ab.
Zum Beispiel ist das erste Verzeichnis C:\TEMP
dann in C:\TEMP
gibt es die Verknüpfungsdatei, die ich den Pfad nur zu der Datei erhalten möchte. In C:\TEMP
für den Test habe ich jetzt drei Dateien:
hpwins23.dat
hpwmdl23.dat
hpwmdl23.dat -Shortcut
(C:\TEMP\hpwmdl23.dat
)
Also, was ich will ist das bekommen Pfadname der Verknüpfung in diesem Fall seine C: \ TEMP
ich versuchte, diese Funktion zu nutzen:
public string GetShortcutTargetFile(string shortcutFilename)
{
string pathOnly = System.IO.Path.GetDirectoryName(shortcutFilename);
string filenameOnly = System.IO.Path.GetFileName(shortcutFilename);
Shell shell = new Shell();
Folder folder = shell.NameSpace(pathOnly);
if (folder == null)
{
}
else
{
FolderItem folderItem = folder.ParseName(filenameOnly);
if (folderItem != null)
{
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
return link.Path;
}
}
return string.Empty;
}
aber wenn ich die Funktion bin mit und seine auf eine Verknüpfung immer ich bin immer Ausnahmefehler auf der Linie:
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink //The exception is: NotImplementedException: The method or operation is not implemented
Was shoud ich tun, um es zu lösen?
Dies ist die vollständige Ausnahme Fehlermeldung:
System.NotImplementedException
gefangen wurde
Nachricht = Das Verfahren oder die Operation ist nicht implementiert.
Quelle =GatherLinks
Stacktrace:
beiShell32.FolderItem.get_GetLink()
beiGatherLinks.Form1.GetShortcutTargetFile(String shortcutFilename)
inD:\C-Sharp\GatherLinks\GatherLinks\GatherLinks\Form1.cs
:line
904
beiGatherLinks.Form1.offlinecrawling
Dieser Benutzer am meisten wird wahrscheinlich fragen, einen symbolischen Link (nicht eine Verknüpfung wie in LNK) zu lösen, wobei dieser Code wird fehlschlagen. Sie müssen 'GetFinalPathNameByHandle()' mit PInvoke verwenden. Beispielcode finden Sie in diesem [Eintrag hier] (http://chrisbensen.blogspot.com/2010/06/getfinalpathnabyhandle.html). – ykay