Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF应用程序中创建快捷方式会损坏原始图标_C#_Wpf_Windows 10_Wsh_Desktop Shortcut - Fatal编程技术网

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

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

所以我有一个非常令人沮丧的问题。我有一个用C#编写的WPF应用程序,运行Windows10(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();
}


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

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

如果您共享一些代码,并指定您正在使用的操作系统,这样会更好。

标题栏和任务管理器中显示的图标由流程本身提供。任务栏中显示的图标由资源管理器提供。启动流程时,没有预先确定的方法覆盖流程知道的图标。如果您是流程开发人员,可以使用命令行参数。@JoelLucsy使用命令行参数做什么?重新更改任务栏图标?现在我很困惑。您是希望任务栏成为程序自行管理的图标,还是希望任务栏成为您在快捷方式中提供的覆盖值?我假设是后者。如果需要前者,请在创建快捷方式时简单地将图标设置为exe。@JoelLucsy我需要程序在任务栏中显示正确的图标(它自己的)。目前没有出现这种情况,因为有一个快捷方式使用不同的图标引用可执行文件。如果您共享一些代码,并指定正在使用的操作系统等,则会更好。标题栏和任务管理器中显示的图标由进程本身提供。任务栏中显示的图标由资源管理器提供。启动流程时,没有预先确定的方法覆盖流程知道的图标。如果您是流程开发人员,可以使用命令行参数。@JoelLucsy使用命令行参数做什么?重新更改任务栏图标?现在我很困惑。您是希望任务栏成为程序自行管理的图标,还是希望任务栏成为您在快捷方式中提供的覆盖值?我假设是后者。如果需要前者,请在创建快捷方式时简单地将图标设置为exe。@JoelLucsy我需要程序在任务栏中显示正确的图标(它自己的)。这目前没有发生,因为有一个快捷方式引用了具有不同图标的可执行文件。您是否尝试过一些建议,当使用快捷方式启动时,覆盖图标是否有效?不管怎样,它没有做我认为它将要做的事情。@ScottChamberlain哈哈,是的,我读了它,我很困惑。无论如何,谢谢。你试过一些建议了吗?当用快捷方式启动时,覆盖图标有效吗?没关系,它没有做我认为它会做的事情。@ScottChamberlain哈哈,是的,我读了它,我很困惑。无论如何,谢谢你。