cor*_*rax 6 .net c# windows shell32
我正在尝试读取 C# 4 应用程序中所有桌面快捷方式的目标。Windows 桌面上的快捷方式可以来自多个位置,具体取决于快捷方式是为所有用户创建还是仅为当前用户创建。在这种特定情况下,我试图从公共桌面读取快捷方式,例如从 C:\Users\Public\Desktop\shortcut.lnk。
代码是这样的(路径是一个包含 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;
Run Code Online (Sandbox Code Playgroud)
最后一行抛出 System.UnauthorizedAccessException,表示不允许读取快捷方式文件的内容。我已尝试在用户的私人桌面 (c:\Users\username\Desktop) 上使用快捷方式文件,效果很好。
所以,我的问题是:
(1) 为什么我的应用程序不允许 /read/ 代码中的快捷方式,当我作为用户可以清楚地阅读内容时?
(2) 有没有办法解决这个问题?也许为应用程序使用特殊的清单文件?
而且,顺便说一下,我的操作系统是 Windows 7,64 位。
好好的
-H-
是的,默认情况下您无法访问该文件夹中的 .lnk 文件。您正在创建一个允许您修改 .lnk 属性的 COM 对象。这需要一个关闭 UAC 的管理员级别帐户。
是的,您可以使用 manifest解决这个问题。
| 归档时间: |
|
| 查看次数: |
2641 次 |
| 最近记录: |