App适配输出方式时发现问题,聊做备忘。

需要注意的是:不要直接引用Interop.IWshRuntimeLibrary.dll程序集,因为它可能是x86或x64的,倘若程序以Any CPU方式编译,则它不再有适配性。

所以用com方式添加引用,得一与App目标平台一至之程序集,可解惑也。

创建代码如下:

  1. public static void CreateShortcutOnDesktop(string shortcutName, string description = "")
  2. {
  3. //添加引用 (com->Windows Script Host Object Model),using IWshRuntimeLibrary;
  4. string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
  5. string shortcutPath = Path.Combine(desktopPath, string.Format("{0}.lnk", shortcutName));
  6. if (!System.IO.File.Exists(shortcutPath))
  7. {
  8. // 获取当前应用程序目录地址
  9. var shell = new IWshRuntimeLibrary.WshShell();
  10. // 确定是否已经创建的快捷键被改名了
  11. foreach (var item in Directory.GetFiles(desktopPath, "*.lnk"))
  12. {
  13. var ws = (IWshRuntimeLibrary.WshShortcut)shell.CreateShortcut(item);
  14. if (ws.TargetPath == App.ExecutablePath)
  15. {
  16. System.IO.File.Move(item, shortcutPath);
  17. return;
  18. }
  19. }
  20.  
  21. var shortcut = (IWshRuntimeLibrary.WshShortcut)shell.CreateShortcut(shortcutPath);
  22. shortcut.TargetPath = App.ExecutablePath;
  23. shortcut.Arguments = string.Empty;
  24. shortcut.Description = description;
  25. shortcut.WorkingDirectory = Environment.CurrentDirectory;
  26. shortcut.IconLocation = App.ExecutablePath;
  27. shortcut.WindowStyle = ;
  28. shortcut.Save();
  29. }
  30. }

需要注意的是:因其中亦有File类定义,因此若要用到System.IO程序集中File,需以全名引之。

参考资料:

C#创建桌面快捷方式 - 心灵深处的那片净土 - CSDN博客

用C#创建应用程序桌面快捷方式 - luwq168的专栏 - CSDN博客

c#: 创建桌面快捷方式的更多相关文章

  1. Ubuntu创建桌面快捷方式

    默认情况下,ubuntu会将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,只需要右键-复制-桌面 就Ok,如图: 上面的方法是通过系统自 ...

  2. Windows中创建桌面快捷方式

    Windows中创建桌面快捷方式 -------------- -------------- -------------- --------------

  3. WPF 创建桌面快捷方式

    #region 创建桌面快捷方式 string deskTop = System.Environment.GetFolderPath(System.Environment.SpecialFolder. ...

  4. 解决Inno Setup制作安装包无法创建桌面快捷方式的问题

    转自:http://yedward.net/?id=104 昨天想把个java程序做成exe安装软件,然后就去下载了Inno Setup这个软件安装包制作软件,Inno Setup这个软件确实非常好用 ...

  5. C#创建桌面快捷方式 和 开机启动

              /// <summary>         /// 创建桌面快捷方式 2010-11-25         /// </summary>         p ...

  6. android 为应用程序创建桌面快捷方式技巧分享

    手机装的软件过多,找起来很不方便,所以在主页面有一个快捷方式的话会很不错的,本文将介绍如何实现,需要了解跟多的朋友可以参考下     我们开发一款软件后,如果手机装的软件过多,去翻的话会很难翻的,所以 ...

  7. Android开发之创建桌面快捷方式

    Android创建桌面快捷方式就是在桌面这个应用上创建一个快捷方式,桌面应用:launcher2 通过查看launcher2的清单文件: <!-- Intent received used to ...

  8. PHP创建桌面快捷方式实例

    要利用php创建桌面快捷方式我们需要借助于header,InternetShortcut及一些我看不懂的代码. 方法:新建一个php文件,然后把下面的代码扔进去,保存为比如shortcut.php,放 ...

  9. 手把手教你在ubuntu下创建桌面快捷方式

    习惯使用windows的朋友来说创建桌面快捷方式简直就是so easy, 鼠标右键点击文件-->选择发送桌面快捷方式.就OK了.对于ubuntu下该如何创建桌面快捷方式呢?以下以创建eclips ...

  10. 在ubuntu系统中给filezilla创建桌面快捷方式

    filezilla是一款开源的ftp客户端,当然他们也有服务端,这里以filezilla客户端为例创建快捷方式!默认情况下,ubuntu将自动安装的软件快捷方式保存在/usr/share/applic ...

随机推荐

  1. 我的es6笔记

    变量 1. let 和 const 声明的变量不在window上了 2. es6中对于块级作用域里的函数声明实现不统一,要避免在大括号里声明函数,尽量用函数表达式来替代. 3. let和const声明 ...

  2. python,字符串方法

    1.capitalize() 首字母大写 text = "hello word" text2 = text.capitalize() print(text2) 2.1.casefo ...

  3. mybatis逆向工程没有报错,但是也没有pojo和Mapper文件问题

    如果你使用的逆向工程是自己手写上去的配置文件,那么错误的范围就太大了.如果是你导入以前使用过的逆向工程,那么没有生成文件很可能是使用的操作系统不同. 原因:逆向工程中的路径问题,windows和mac ...

  4. spring面向接口编程

    (1)创建一个接口 package com.min.dao; public interface UserDao { public void save(String uname, String pwd) ...

  5. 比sort()性能更好的原生js代码实现数组从小到大排序

    nums = [1,2,4,1,34,6,-1,2] for(let i = nums.length - 1; i > 0; i--) { let maxIdx = i; for(let j = ...

  6. DeprecationWarning

    当我在导入sklearn这个库的时候,程序抛出了一个丢弃警告,它的意思是在版本更新后imp库已经不用了,用importlib来代替这个库 Warning (from warnings module): ...

  7. BZOJ 3687: 简单题 bitset

    3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 小呆开始研究集合论了,他 ...

  8. Oracle表空间不足;查询表空间使用率(unable to extend lob segment SYS_LOB0000076749C00006$$ by 8192 in tablespace USERS)

    查询表空间对应地址 *),) total_space from dba_data_files order by tablespace_name; //方案一:修改表空间大小(32000可改为想要的数值 ...

  9. layer.open参数;layer.open关闭事件;layer.open关闭刷新;layer.open获取子页的值;layer.open调用子页面的方法

    父页面 function layerOpen() { layer.open({ type: 2, shade: [0], title: "验收申请", area: ['1024px ...

  10. react基础学习 二——生命周期

    生命周期mount: mounting装载创建 update更新 unmounting卸载 错误捕获 注意点:生命周期函数的 作用,什么之后用 只有类式组件有生命周期,函数式组件没有生命周期 moun ...