迁移桌面程序的时候,有可能你会遇到这么个需求——开机自启动。Windows传统桌面程序的传统陋习。不论什么奇葩软件都想要开机自启动,默认就给你打开,一开机哐哐哐什么雷,什么企鹅都蹦出来,也不管你用不用。
  但是上班呢,老板是给钱的,只要有需求,节操什么的不重要。今天我们就来看怎么弄开机自启动……(大雾)
  当然我们这里介绍的,是可以让用户随时禁用的。还有就是MS Store在审核时,会让你写需要自启动的理由。原生的UWP APP还会有一个要求授权的对话框。
  首先我们还是和上一篇一样,建好一个空的WPF(WinForm也行)工程和一个Packaging工程。假设我们这里叫AutoLaunchApp和AutoLaunchPackaging。记得在Packaging工程的Applications下添加对AutoLaunchApp的引用。
  接下来右键Package.appxmanifest文件,选择open with…再选择XML(Text)Editor打开。

  

  在这个XML文件中,在最上方的Package添加命名空间

xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"

  

  之后就可以通过desktop来添加desktop:Extension和desktop:StartupTask节点。这里的属性值介绍见下表:

Category: windows.startupTask
Executable: 转制的exe文件名,我们这里是AutoLaunchApp.exe
EntryPoint: Windows.FullTrustApplication
TaskId: 给StartupTask起个名字,方便在C#代码里关闭和开启Task
Enabled: 默认是否开启自启动
DisplayName: 显示在Windows任务管理器里的名字

  

  最简单的自启动任务到此就完成了。通过Visual Studio部署安装后(不要按F5运行),就可以在任务管理器中找到AutoLaunchApp。此时会发现Status的状态是Disabled。此时的StartupTask实际是没有激活的。在这种情况下重新启动电脑,并不会开机自启动AutoLaunchApp。

  

  此时如果我们运行一次AutoLaunchApp,则会将Status置为Enabled,从而启用开机自启动的功能。
  那有的同学就较真了,我原来的桌面程序,不用运行一次,安装完毕直接重启电脑就可以实现开机自启动。你这个不符合要求。说实话这个问题是挺头疼的,但也不是没有办法解决。
  我这里提供一个很简单的方法,特别适合于不走商店流程(也就是sideload,常见于通过企业IT部署),而是通过独立的msi之类的安装包安装的情况。
  首先我么需要通过Packaging工程的Package.appxmanifest文件,来给AutoLaunchApp增加一个Protocol。这里我们在tab页中选择Declarations,然后在Available Declarations中选择Protocol,点击Add。在Name一栏随便填个缩写alpp(Auto Launch Packaging Protocol)。

  

  完成后重新部署,然后我们就可以通过这个缩写来进行URI启动APP的操作了。如果此时我们在CMD中输入“start alpp:”,回车后会发现AutoLaunchApp被启动。
  接下来我们需要通过安装包的脚本向注册表插入这个cmd的script。
  [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]

  

  这样的话,我们会有一个一次性的CMD script在Windows启动时被执行。然后通过CMD script来启动AutoLaunchApp,激活StartupTask。
  本篇我们讨论了如何开机自启动转制的desktop APP,下一篇会讨论如何在APP的设置里开启/禁用自启动的选项,谢谢将鼠标滚动到这里的同学。
  GitHub:
  https://github.com/manupstairs/DesktopBridgeSamples.git

迁移桌面程序到MS Store(3)——开机自启动的更多相关文章

  1. 迁移桌面程序到MS Store(5)——.NET Standard

    接下来的几篇,我想讨论下迁移桌面程序到MS Store,可以采用的比较常见.通用性比较强的实施步骤和分层架构. 通常商业项目一般都是不断的迭代,不太可能突然停止更新现有的桌面版本,然后花很长时间从头来 ...

  2. 迁移桌面程序到MS Store(1)——通过Visual Studio创建Packaging工程

    之前跑去做了一年多的iOS开发,被XCode恶心得不行.做人呢,最重要的是开心.所以我就炒了公司鱿鱼,挪了个窝回头去做Windows开发了.        UWP什么的很久没有正儿八经写了,国内的需求 ...

  3. 迁移桌面程序到MS Store(8)——通过APPX下载Win32Component

    在上一篇<迁移桌面程序到MS Store(7)——APPX + Service>中,我们提到将desktop application拆分成UI Client+Service两部分.其中UI ...

  4. 迁移桌面程序到MS Store(9)——APPX With Desktop Extension

    在<迁移桌面程序到MS Store(8)——通过APPX下载Win32Component>中我们讨论了通过APPX来下载Service部分的安装包.但是纯UWP的客户端并不能自动运行下载的 ...

  5. 迁移桌面程序到MS Store(10)——在Windows S Mode运行

    首先简单介绍Windows 10 S Mode,Windows在该模式下,只能跑MS Store里的软件,不能通过其他方式安装.好处是安全有保障,杜绝一切国产流氓软件.就像iOS一样,APP进商店都需 ...

  6. 迁移桌面程序到MS Store(12)——WPF使用UWP InkToolbar和InkCanvas

    我们在<迁移桌面程序到MS Store(4)——桌面程序调用Win10 API>提到了对Win10 API的调用,但仍存在无法在WPF中使用UWP控件的问题,虽然都是XAML控件,但却是两 ...

  7. 迁移桌面程序到MS Store(13)——动态检查Win10 API是否可用

    假设我们现有一个WPF程序,需要支持1903以前的Windows 10版本.同时在1903以后的版本上,额外多出一个Ink的功能.那么我们就可以通过ApiInformation.IsApiContra ...

  8. 迁移桌面程序到MS Store(14)——APPX嵌入WCF Service以Admin权限运行

    Windows10 1809版本开始,微软又对UWP开放了新的Capability:AllowElevation. 通过这个新的Capability,UWP APP能够在运行时向用户请求Admin权限 ...

  9. 迁移桌面程序到MS Store(2)——Desktop App Converter

    迁移传统桌面程序到MS Store的另一种方式是使用Desktop App Converter工具.虽然本篇标题包含了Desktop App Converter(以下简称DAC),实际上我是来劝你别用 ...

随机推荐

  1. 堆和索引堆的实现(python)

    ''' 索引堆 ''' ''' 实现使用2个辅助数组来做.有点像dat.用哈希表来做修改不行,只是能找到这个索引,而需要change操作 还是需要自己手动写.所以只能用双数组实现. #引入索引堆的核心 ...

  2. 2017/2/12:springMVC的简单文件上传跟拦截器

    1.写文件上传的界面jsp代码如下重点为文件上传标签的类型 2.写登录成功跟失败的界面:成功自己写 3.写springMVC的文件上传的controller的方法 4.最后一步配置spring-ser ...

  3. 2G内存编译android4.0

    http://blog.csdn.net/leerobin83/article/details/7873229 1.Error occurred during initialization of VM ...

  4. 2017-2018-1 20155312《信息安全技术》实验二——Windows口令破解实验报告

    2017-2018-1 20155312<信息安全技术>实验二--Windows口令破解实验报告 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破 ...

  5. canvas 实现赛车小游戏

    一:样式 <style> #btn{ width: 60px; height: 30px; line-height: 30px; background: #7EC0EE; border: ...

  6. 使用Hadoop API 压缩HDFS文件

    下篇解压缩:使用Hadoop API 解压缩 HDFS文件 起因: 集群磁盘剩余空间不足. 删除了存储在HDFS上的,一定时间之前的中间结果,发现并不能释放太多空间,查看计算业务,发现,每天的日志存在 ...

  7. ps中为什么在图片上面添加不了文字

    我们在使用PS对某些图片进行处理时,往往会添加一些文字:但有时因图片格式问题,导致添加文字是一个小黑点,无法看清,下面就为大家讲解一下具体的处理方法. 工具/原料   Photoshop CS5.图片 ...

  8. 2019.01.02 poj3046 Ant Counting(生成函数+dp)

    传送门 生成函数基础题. 题意:给出nnn个数以及它们的数量,求从所有数中选出i∣i∈[L,R]i|i\in[L,R]i∣i∈[L,R]个数来可能组成的集合的数量. 直接构造生成函数然后乘起来f(x) ...

  9. C# 中使用面向切面编程(AOP)中实践代码整洁(转)

    出处:https://www.cnblogs.com/chenug/p/9848852.html 1. 前言 最近在看<架构整洁之道>一书,书中反复提到了面向对象编程的 SOLID 原则( ...

  10. vue 开发系列(三) vue 组件开发

    概要 vue 的一个特点是进行组件开发,组件的优势是我们可以封装自己的控件,实现重用,比如我们在平台中封装了自己的附件控件,输入控件等. 组件的开发 在vue 中一个组件,就是一个独立的.vue 文件 ...