我不是一个非常有经验的程序员和 C# 新手,我在使用 shell32.shell() 获取快捷方式的目标时遇到了一些问题。我在 stackoverflow 上找到了代码——它在普通的 Windows PC 上运行良好,但是当在 Citrix 虚拟化 Windows 桌面(我需要它运行的地方)上执行时,它会中断。
代码通过 foreach 循环通过文件夹中的快捷方式运行,并过滤掉任何具有可执行目标的内容。问题是,为了找到快捷方式的目标,我使用下面的代码,一旦它被称为 foreach 就会中断并且不再继续(在 Citrix 上)。
我已经确定中断发生在“var shl = new Shell32.Shell();”行,该行之后的代码不会触发并退出 foreach(但在 foreach 之后继续执行代码)。
public static string GetLnkTarget(string lnkPath)
{
var shl = new Shell32.Shell();
lnkPath = System.IO.Path.GetFullPath(lnkPath);
var dir = shl.NameSpace(System.IO.Path.GetDirectoryName(lnkPath));
var itm = dir.Items().Item(System.IO.Path.GetFileName(lnkPath));
var lnk = (Shell32.ShellLinkObject)itm.GetLink;
return lnk.Target.Path;
}
有谁知道另一种方法来查找可在 Citrix 虚拟化环境中工作的快捷方式的目标?