C#创建快捷方式图标位置不适用于网络路径

时间:2014-11-25 05:36:00

标签: c# icons shortcut

我正在使用IwishRuntime Library动态创建快捷方式。如果图标位于网络路径中,则设置图标位置将不起作用。

例如,如果路径类似于“\\ ServerName \ Folder \ Resources \ Userguide.ico”;图标将不会被设置。 这仅在Windows 8和8.1中发生。它在以前的操作系统中运行良好。

是否有任何解决方法可以解决此问题。

            string path = System.IO.Directory.GetCurrentDirectory() + @"\Upgrade\Resources\userguide.ico";
            //Icon Location is set only if the file is there. If the file is not accessible due to security reasons 
            //Icon location is not set. The default program will be taken as the icon in this case.
            if (System.IO.File.Exists(path))
            {
                shortcut.IconLocation = path;
            }

感谢。

2 个答案:

答案 0 :(得分:0)

你需要在你的Path前面使用@,每次都是\\

fetchAttribute()

它在Windows 10上工作

答案 1 :(得分:0)

我遇到了类似的问题,即Win10 Creators Edition。结论是,Icon.ExtractAssociatedIcon()不会从网络路径运行。它不会从.ico文件读取该图标,我的测试是这样的。

        Icon myImage;
        string fn = sIconPath + "\\" + cSymbolIconFile;
        try
        {
            if (File.Exists(fn)) myImage = Icon.ExtractAssociatedIcon(fn); 
              else MessageBox.Show("Error: File not found.");
        } catch(Exception EE) { MessageBox.Show("Error: "+EE.Message); }

当我的sIconPath是网络路径时,出现一个异常,提示“错误:of的值对'filePath'无效”

现在要解决此问题,您应该将图标文件放入资源中,并将其包含在链接中。

  1. 在名为“例如”的项目“ mydll”中创建资源“ buttonresources”,将您的图标文件放入其中。.

  2. 将mydll.dll放入可执行主项目的引用中

  3. 您的项目中现在应该有一个buttonresources.resx。定位一个名为例如的图标“ myicon”如下。

        System.Reflection.Assembly a1 = GetType().Assembly;
        var m = new System.Resources.ResourceManager("mydll.buttonresources", a1);
        Icon myImage = (System.Drawing.Icon)m.GetObject("myicon");