我正在使用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;
}
感谢。
答案 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'无效”
现在要解决此问题,您应该将图标文件放入资源中,并将其包含在链接中。
在名为“例如”的项目“ mydll”中创建资源“ buttonresources”,将您的图标文件放入其中。.
将mydll.dll放入可执行主项目的引用中
您的项目中现在应该有一个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");