我有一个实用程序可以创建桌面快捷方式。 我的应用程序,我正在创建一个快捷方式名称为“com.example.myapp.exe”
这个应用程序在Intranet网络中共享,所有系统都将有一个网络驱动器(可能是H :)所以我的应用程序的完整路径将像“H:/ network apps / com.example.myapp.exe”
现在我的实用程序正在使用此路径并创建桌面快捷方式,但问题是创建的链接无效,它指向路径“H:/ network apps / com.exe”
代码:
string destPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);
string shortcutName = @"com.example.myapp.exe - shortcut.lnk";
string path = System.IO.Path.Combine(destPath, shortcutName);
WshShellClass wsh = new WshShellClass();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(path) as IWshRuntimeLibrary.IWshShortcut;
shortcut.TargetPath = @"H:/network apps/com.example.myapp.exe";
shortcut.WorkingDirectory = @"H:/network apps/";
shortcut.Save();
//created shortcut path is H:/network apps/com.exe
如何更正此路径..
注意:如果我使用普通驱动器(C :)文件夹快捷方式路径是“C:/ network apps / com.example.myapp.exe”
答案 0 :(得分:1)
我玩了你的代码,并确定驱动器号是否存在,它不起作用。
由于我有N:映射,我将您的代码更改为以下内容:
shortcut.TargetPath = @"N:\network apps\com.example.myapp.exe";
shortcut.WorkingDirectory = @"N:\network apps\";
它用正确的路径创建了快捷方式。
为了测试我的理论,我修改了你的代码,为每个驱动器号创建一个链接:
using System;
using IWshRuntimeLibrary;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (char letter = Char.Parse("A"); letter <= Char.Parse("Z"); letter++)
{
string destPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory);
string shortcutName = string.Format("{0} - com.example.myapp.exe - shortcut.lnk", letter);
string path = System.IO.Path.Combine(destPath, shortcutName);
IWshShell_Class wsh = new IWshShell_Class();
IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(path) as IWshRuntimeLibrary.IWshShortcut;
shortcut.TargetPath = string.Format(@"{0}:\network apps\com.example.myapp.exe", letter);
shortcut.WorkingDirectory = string.Format(@"{0}:\network apps\", letter);
shortcut.Save();
}
}
}
}