我正在尝试读取C 4应用程序中所有桌面快捷方式的目标。Windows桌面上的快捷方式可以来自多个该位置,具体取决于是为所有用户创建快捷方式,还是仅为当前用户创建快捷方式。在这种特定的情况下,我尝试从公共桌面读取快捷方式,例如从c:\users\public\desktop\shortcut.lnk。
代码如下(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:\user s\username\desktop)上尝试了快捷方式文件,但效果很好。
所以,我的问题是:
(1)为什么我的应用程序不允许/读取/从代码中快捷方式,当我作为用户可以清楚地读取内容时?
(2)有没有办法解决这个问题?可能对应用程序使用特殊清单文件?
顺便说一下,我的操作系统是Windows7,64位。
很好
-H-