无法使用com.example.myapp.exe创建名称快捷方式

时间:2015-07-07 13:26:29

标签: c#

我有一个实用程序可以创建桌面快捷方式。 我的应用程序,我正在创建一个快捷方式名称为“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”

1 个答案:

答案 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();
            }
        }
    }
}