在WPF应用程序中创建快捷方式会破坏原始图标

时间:2017-11-04 13:58:45

标签: c# wpf windows-10 wsh desktop-shortcut

所以我有一个非常令人沮丧的问题。我有一个用C#编写的WPF应用程序运行Windows 10(版本1703,OS Build 15063.0),它为当前运行的可执行文件创建快捷方式。问题是,当我创建这些时,我为快捷方式设置了一个不同的(自定义)图标。我不认为这会是一个问题,但下次我运行应用程序(从原始位置)时,它会显示我为任务栏中的快捷方式设置的自定义图标。只是任务栏。标题栏和任务管理器显示正确的图标和标题。我在这做错了什么?在这一点上,我认为这是一个Windows错误。我创建快捷方式的方法如下:

public void CreateShortcut(string name)
{
        string AppDir = GetAppDataDir();
        object shDesktop = (object)"Desktop";
        WshShell shell = new WshShell();
        string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\" + name + ".lnk";
        IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
        shortcut.Description = "Play " + name + "!!";
        shortcut.Hotkey = "Ctrl+Shift+N";
        shortcut.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        shortcut.TargetPath = Directory.GetCurrentDirectory() + "/Catapult.exe";
        shortcut.Arguments = "-play \"" + name + "\"";
        shortcut.IconLocation = AppDir + "/Games/" + name + ".ico";
        shortcut.Save();
}

1 个答案:

答案 0 :(得分:0)

看来我的解决方案是没有解决方案。在当前状态下,Windows 允许您使用自定义图标创建快捷方式,这些图标引用可执行文件,而不会弄乱该可执行文件的现有图标。对我来说,这是不可接受的,因为我现在必须使用笨重的代码来解决这个问题(没有比这更糟的了,我是对的吗?)。 Microsoft需要尽快在Explorer中修复这个古怪的实现。