【发布时间】:2016-03-13 07:36:08
【问题描述】:
我想知道桌面中是否存在 mspaint 快捷方式?如果存在,则用户评分为 7,否则为 0。我使用此代码:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
if (Directory.Exist (path + @"\mspaint.exe"))
{
Controller.ExamController.AddExam(1, n, 7, time, Session.currentUserId);
}
else
{
Controller.ExamController.AddExam(1, n, 0, time, Session.currentUserId);
}
但无论如何结果是“0”。但此代码适用于目录和文件夹并返回 7。 我也尝试“File.Exist”,但它有同样的问题。
如何查看桌面是否存在特定程序的快捷方式?
if (questionNumber == 2)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
var list = Directory.EnumerateFiles(path);
foreach (var v in list)
{
var extension = Path.GetExtension(v);
if (extension.Equals(".lnk", StringComparison.InvariantCultureIgnoreCase))
{
WshShell shell = new WshShell();
IWshShortcut link = (IWshShortcut)shell.CreateShortcut(v);
if (Path.GetFileName(link.TargetPath).Equals("mspaint.exe", StringComparison.InvariantCultureIgnoreCase))
{
Controller.ExamController.AddExam(1, n, 7, time, Session.currentUserId);
}
else
{
Controller.ExamController.AddExam(1, n, 0, time, Session.currentUserId);
}
}
}
}
当我使用它时,它没问题,但它返回 0 表示不存在,返回 0 和 7 表示存在
【问题讨论】:
-
这不起作用的原因是因为快捷方式是一种特殊的文件,它包含指向某个位置的数据(例如 mspaint.exe),但这并不意味着它需要命名为与它指向的 exe 相同。所以它可以有一个名称“HappyPaint.lnk”并指向“mspaint.exe”。我建议将问题修改为“我如何阅读快捷方式目的地”。