我在一款C# 4应用程序中尝试读取所有桌面快捷方式的目标。Windows桌面上的快捷方式可以来自多个位置,具体取决于快捷方式是为所有用户还是仅为当前用户创建的。在这种特定情况下,我正在尝试从公共桌面读取快捷方式,例如从C:\Users\Public\Desktop\shortcut.lnk。
代码如下(path是包含lnk文件路径的字符串):
最后一行抛出了System.UnauthorizedAccessException异常,表明不允许读取快捷方式文件的内容。我已经尝试在用户私人桌面上的快捷方式文件(c:\ Users \ username \ Desktop)上操作,这很正常。
代码如下(path是包含lnk文件路径的字符串):
var shell = new Shell32.ShellClass();
var folder = shell.NameSpace(Path.GetDirectoryName(path));
var folderItem = folder.ParseName(Path.GetFileName(path));
if (folderItem != null)
{
var link = (Shell32.ShellLinkObject)folderItem.GetLink;
最后一行抛出了System.UnauthorizedAccessException异常,表明不允许读取快捷方式文件的内容。我已经尝试在用户私人桌面上的快捷方式文件(c:\ Users \ username \ Desktop)上操作,这很正常。
所以,我的问题是:
(1)为什么我的应用程序无法从代码中/读取/快捷方式,而我可以清楚地作为用户读取内容?
(2)有没有办法绕过这个问题?也许使用应用程序的特殊清单文件?
顺便说一句,我的操作系统是Windows 7,64位。
保重
-h-