博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wince实现软件开机自启动
阅读量:4987 次
发布时间:2019-06-12

本文共 2292 字,大约阅读时间需要 7 分钟。

Wince实现软件开机自启动的方式很多,下面列出我常用的两种。

1.修改注册表

  修改注册表[HKEY_LOCAL_MACHINE\init] 的Launch50键值为当前软件路径,不启动exploerer.exe。这种实现方式可以直接打开软件不进入桌面,但是软件一旦关闭就会死机。

这种方式比较适合产品成熟后使用,开发测试过程中不建议使用。

string keyName;            string valueName;            keyName = "HKEY_LOCAL_MACHINE\\init";            valueName = "Launch50";            object value = null;            string ret = null;            try            {                // 获取对应键的值                ret = (string)Registry.GetValue(keyName, valueName, value);            }            catch (System.ArgumentNullException)            {                MessageBox.Show("value 为 null");            }            catch (System.ArgumentException)            {                MessageBox.Show("keyName 未以有效注册表根开头。- 或 -valueName 的长度超过了允许的最大长度(255 个字符)。");            }            catch (System.UnauthorizedAccessException)            {                MessageBox.Show(" Microsoft.Win32.RegistryKey 是只读的,因此无法对其写入;例如,它是根级节点。");            }            catch (System.Security.SecurityException)            {                MessageBox.Show(" 用户没有创建或修改注册表项所需的权限。");            }                      //得到当前目录            string ttValue = Form1.dirname + "\\ICM.exe";            Registry.SetValue(keyName, valueName, (object)ttValue);            ret = (string)Registry.GetValue(keyName, valueName, value);

2.添加快捷方式到启动目录

  生成当前软件的快捷方式到启动目录。这种实现方式会先进入桌面再打开软件,解决了上面方案软件关闭死机的问题,但因为是进入桌面再打开呈现效果显得不够专业2333。

string programPath = Form1.dirname + "\\ICM.exe";//程序当前路径            string lnkPath = @"/Windows/启动/ICM.exe.lnk";//快捷方式存放到启动文件夹            if (!File.Exists(lnkPath))            {                try                {                    string text = (programPath.Length + 2).ToString() + "#\"" + programPath + "\"";                    byte[] buf = new byte[text.Length];                    buf = System.Text.Encoding.GetEncoding(936).GetBytes(text.Substring(0, text.Length));                    FileStream fs = new FileStream(lnkPath, FileMode.CreateNew);                    fs.Write(buf, 0, buf.Length);                    fs.Close();                    fs = null;                }                catch (System.Exception ex)                {                    MessageBox.Show(ex.ToString());                }            }

 

  

转载于:https://www.cnblogs.com/akagreen/p/10912727.html

你可能感兴趣的文章
解决 安装cocoapods失败,提示 requires Ruby version >=2.2.2
查看>>
四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲
查看>>
Java文件IO操作应该抛弃File拥抱Paths和Files
查看>>
IO多路复用(一)-- Select、Poll、Epoll
查看>>
如何配置Filter过滤器处理JSP中文乱码(转)
查看>>
ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露
查看>>
将Session放入Redis
查看>>
微信小程序图片使用示例
查看>>
程序员在工作中如何快速成长和学习?
查看>>
YII 1.0 (7) 登录信息调取 session使用
查看>>
原生ajax
查看>>
BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
查看>>
第二语言习得理论介绍
查看>>
Django 高级视图
查看>>
C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态
查看>>
机器学习方法(八):随机采样方法整理(MCMC、Gibbs Sampling等)
查看>>
架构妄想:AJAX + REST
查看>>
css垂直居中的问题
查看>>
如何正确从他人机器MySQL数据库下拷贝出.sql,再导入到自己windows下MySQL数据库(图文详解)...
查看>>
面向对象之选课系统
查看>>