可能重复:
获取快捷方式文件夹的目标
比如在C:\TEMP\
我有一个快捷方式叫做test.dll
快捷方式会导致文件名test.dll
我想从快捷方式只获取它自己的文件的路径名。所以,我在另一个递归函数中调用这个函数,并且每次从我的硬盘的另一个目录中放入这个函数。
例如,第一个目录C:\TEMP
就在C:\TEMP
那里,我想只获取文件路径的快捷方式文件。在C:\TEMP
测试中,我现在有 3 个文件:
hpwins23.dat
hpwmdl23.dat
hpwmdl23.dat -Shortcut
(C:\TEMP\hpwmdl23.dat
)
所以,我想得到的是快捷方式的路径名,在这种情况下是 C:\TEMP
我尝试使用此功能:
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;
}
但是当我使用该函数并进入快捷方式时,我在线上遇到异常错误:
Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink //The exception is: NotImplementedException: The method or operation is not implemented
我应该怎么做才能解决它?
这是完整的异常错误消息:
System.NotImplementedException
被捕获
消息=方法或操作未实现。
来源=GatherLinks
StackTrace :
atShell32.FolderItem.get_GetLink()
atGatherLinks.Form1.GetShortcutTargetFile(String shortcutFilename)
in
D:\C-Sharp\GatherLinks\GatherLinks\GatherLinks\Form1.cs
:line
904
atGatherLinks.Form1.offlinecrawling