1.注册表里面写代码,设置程序以开机启动; 但这样会需要管理员权限,添加程序以管理员权限启动后,又无法直接进入到软件启动界面,UAC控制

代码一:

  1. /// <summary>
  2. /// 设置应用程序开机自动运行
  3. /// </summary>
  4. /// <param name="fileName">应用程序的文件名</param>
  5. /// <param name="isAutoRun">是否自动运行,为false时,取消自动运行</param>
  6. /// <exception cref="System.Exception">设置不成功时抛出异常</exception>
  7. public static void SetAutoRun(string fileName, bool isAutoRun)
  8. {
  9. RegistryKey reg = null;
  10. try
  11. {
  12. reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
  13. if (reg == null)
  14. reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
  15.  
  16. if (isAutoRun)
  17. reg.SetValue("WITDASHELL", fileName);
  18. else
  19. reg.SetValue("WITDASHELL", false);
  20. reg.Close();
  21. }
  22. catch (Exception ex)
  23. {
  24. //屏蔽没有权限导致的报错信息
  25. }
  26. finally
  27. {
  28. if (reg != null)
  29. reg.Close();
  30. }
  31. }

代码二:

http://www.cnblogs.com/MaxIE/archive/2013/04/17/3027229.html       (启动时获取管理员权限)

2.使用Window 服务

本来这个是应该没有问题的,但是工作环境使用的是嵌入式WES, 不知道哪个地方被自己删除了,导致所有服务都无法在界面上面查看,所以自己写了一堆可以在本机运行的代码后,部署在测试机的时候傻眼了

又不想立刻重新安装测试机的操作系统环境;

3.使用任务计划

代码一:

  1. #if !DEBUG
  2. //开机启动程序
  3. DotNet.Utilities.Helper.TaskHelper th = new DotNet.Utilities.Helper.TaskHelper();
  4. th.CreateTaskScheduler("author", "开机启动软件", "StartAPP", Path.Combine(Directory.GetCurrentDirectory(), "WITDA.Shell.exe"));
  5. #endif

代码二:

  1. public class TaskHelper
  2. {
  3. /// <summary>
  4. /// delete task
  5. /// </summary>
  6. /// <param name="taskName"></param>
  7. private static void DeleteTask(string taskName)
  8. {
  9. TaskSchedulerClass ts = new TaskSchedulerClass();
  10. ts.Connect(null, null, null, null);
  11. ITaskFolder folder = ts.GetFolder("\\");
  12. folder.DeleteTask(taskName, );
  13. }
  14.  
  15. /// <summary>
  16. /// get all tasks
  17. /// </summary>
  18. public static IRegisteredTaskCollection GetAllTasks()
  19. {
  20. TaskSchedulerClass ts = new TaskSchedulerClass();
  21. ts.Connect(null, null, null, null);
  22. ITaskFolder folder = ts.GetFolder("\\");
  23. IRegisteredTaskCollection tasks_exists = folder.GetTasks();
  24. return tasks_exists;
  25. }
  26.  
  27. /// <summary>
  28. /// check task isexists
  29. /// </summary>
  30. /// <param name="taskName"></param>
  31. /// <returns></returns>
  32. public static bool IsExists(string taskName)
  33. {
  34. var isExists = false;
  35. IRegisteredTaskCollection tasks_exists = GetAllTasks();
  36. for (int i = ; i <= tasks_exists.Count; i++)
  37. {
  38. IRegisteredTask t = tasks_exists[i];
  39. if (t.Name.Equals(taskName))
  40. {
  41. isExists = true;
  42. break;
  43. }
  44. }
  45. return isExists;
  46. }
  47.  
  48. /// <summary>
  49. /// 创建任务
  50. /// </summary>
  51. /// <param name="creator">创建任务的人员名称</param>
  52. /// <param name="taskName">任务名称</param>
  53. /// <param name="path">执行程序的路径</param>
  54. public void CreateTaskScheduler(string creator, string Description, string taskName, string path)
  55. {
  56. try
  57. {
  58. if (IsExists(taskName))
  59. {
  60. return;
  61. }
  62.  
  63. //new scheduler
  64. TaskSchedulerClass scheduler = new TaskSchedulerClass();
  65. //pc-name/ip,username,domain,password
  66. scheduler.Connect(null, null, null, null);
  67. //get scheduler folder
  68. ITaskFolder folder = scheduler.GetFolder("\\");
  69.  
  70. //set base attr
  71. ITaskDefinition task = scheduler.NewTask();
  72. task.RegistrationInfo.Author = creator;//creator
  73. task.RegistrationInfo.Description = Description;//description
  74.  
  75. task.Principal.RunLevel = _TASK_RUNLEVEL.TASK_RUNLEVEL_HIGHEST;
  76.  
  77. //set trigger (IDailyTrigger ITimeTrigger)
  78. task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
  79.  
  80. //set action
  81. IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
  82. action.Path = path;
  83.  
  84. task.Settings.RunOnlyIfIdle = true;
  85. task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
  86. task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行
  87. task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行
  88. task.Settings.Priority = ;
  89.  
  90. IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
  91. (int)_TASK_CREATION.TASK_CREATE, null, //user
  92. null, // password
  93. _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
  94. "");
  95. }
  96. catch (Exception ex)
  97. {
  98.  
  99. }
  100. }
  101. }

总结:

自己现在状态特别差,不是一天两天不想做事情了,自己要做好准备,迎接变化;每天打游戏不是你这么大的人应该做的 事情;

已经连续玩了一个月,不似caiguai

Win7 开机启动的更多相关文章

  1. win7开机启动项设置

    Windows系统自身就有启动项命令可以进行设置: 要说到修改启动项,当然首推Windows系统自带的“MSCONFIG”命令,XP等其他Windows系统用户使用方法是一模一样的. 1.点击“开始” ...

  2. win7下exe文件设置为开机启动

    如何将自己的exe程序设置为开机自启动 如何将自己的exe程序设置为开机自启动 将自己的exe程序设置为开机自启动话不多说,直接看 首先1:cmd—>regedit 其次找到下面的路径就可以:( ...

  3. win7如何快速设置开机启动项?

    添加开机启动项方法: 找到windows开始菜单->所有程序->启动,右键打开, 进入C:\Users\Ocean\AppData\Roaming\Microsoft\Windows\St ...

  4. win7怎么把软件加入开机启动项

    点击开机菜单进入. 2 然后点击菜单栏中的所有程序. 3 在所有程序中找到‘启动’,这个启动就是开机启动项来的. 4 右键进行打开启动项. 5 把快捷方式复制到开机启动项中.如果找不到快捷方式可以右键 ...

  5. win7设置开机启动virtualBOX虚拟机

    如果常用VirtualBox虚拟机系统的话,设置随开机启动也是很方便的.不需要打开VirtualBox窗口,直接启动VirtualBox虚拟机系统就可以了. 设置开机自启动VirtualBox虚拟机系 ...

  6. Win7/8 绿色软件开机启动

    在查找番茄工作法PC端软件时,发现了淡高的文章win8绿色软件开机启动,试用了一下wintabs,的确好用! 另外,office软件中有一款 OFFICE tabs的插件,标签式的管理,非常方便快捷, ...

  7. 解决Strokeit在win8下的图标问题和开机启动问题

    Strokeit目前和Windows 8有一点不兼容,就是运行之后,任务栏会有它的图标,看着很不爽,用兼容模式运行可解决这个问题,但是这样一来就不能开机自动运行了,本文主要解决这个问题.  (参考资料 ...

  8. 【原】个人对win7开机黑屏只有鼠标排障总结

    个人对win7开机黑屏只有鼠标排障总结 文:铁乐猫 第一种情况是explorer.exe进程丢失或损坏有关: 判断方法是按Ctrl+Alt+Del键能呼出任务管理器,结束explorer.exe进程, ...

  9. 破解win7开机密码,又不取消密码

    Win7开机密码破解方法 1. 进入pe.(可用系统盘,或者u盘启动) 2.进入c:\windows\system32下 更改magnify.exe和cmd.exe的所有者为administrator ...

随机推荐

  1. ajax 多个setInterval进行ajax请求的页面长时间打开会出现页面卡死问题

     多个setInterval进行ajax请求的页面长时间打开会出现页面卡死问题 浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉.当我们执行异步ajax的时候没有问 ...

  2. code::blocks学习(2)

    转自: http://blog.csdn.net/sinat_27088253/article/details/52137855 http://jingyan.baidu.com/article/0b ...

  3. NSUserDefault存储类

    类要实现NSCoding协议 实现encodeWithCoder和initWithCoder方法 先把类的instance archive成NSData,然后存起来 TGTest *tt = [TGT ...

  4. 手动博客重定向 https://www.cnblogs.com/kelthuzadx/

    https://www.cnblogs.com/kelthuzadx/ 博客狂魔又㕛叒换地址了

  5. Object类和包装类的一些方法

    一.instanceof关键字的使用: a instanceof A:判断对象a是否是类A的实例.如果是,返回true:如果不是,返回false. 使用场景:为了避免在向下转型时出现ClassCast ...

  6. 《UltraFast设计法实践》系列目录

    最近准备开始潜心学习快速和高效的时序收敛设计了,突然想就把整个学习过程做成一个博客系列吧,虽然想想就很激动(技术狗就这么点出息--),但希望坚持下来. 这篇做个目录或者索引,不断向其中添加学习内容. ...

  7. JavaWeb学习笔记(二十)—— Ajax

    一.Ajax概述 1.1 什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与 ...

  8. python update()

    Python 字典 update() 函数把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里. dict.update(dict2) 如果dict2里的键和dict1 ...

  9. [蓝桥杯][2016年第七届真题]路径之谜(dfs)

    题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡. 城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士要从西北角走到东南角. ...

  10. C#的datatable使用

    // 构造datatable DataTable dt = new DataTable("test_table"); dt.Columns.AddRange(new DataCol ...