Win7 开机启动

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

代码一:

/// <summary>
        /// 设置应用程序开机自动运行
        /// </summary>
        /// <param name="fileName">应用程序的文件名</param>
        /// <param name="isAutoRun">是否自动运行,为false时,取消自动运行</param>
        /// <exception cref="System.Exception">设置不成功时抛出异常</exception>
        public static void SetAutoRun(string fileName, bool isAutoRun)
        {
            RegistryKey reg = null;
            try
            {
                reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
                if (reg == null)
                    reg = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");

                if (isAutoRun)
                    reg.SetValue("WITDASHELL", fileName);
                else
                    reg.SetValue("WITDASHELL", false);
                reg.Close();
            }
            catch (Exception ex)
            {
                //屏蔽没有权限导致的报错信息
            }
            finally
            {
                if (reg != null)
                    reg.Close();
            }
     }

代码二:

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

2.使用Window 服务

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

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

3.使用任务计划

代码一:

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

代码二:

 public class TaskHelper
    {
        /// <summary>
        /// delete task
        /// </summary>
        /// <param name="taskName"></param>
        private static void DeleteTask(string taskName)
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();
            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\");
            folder.DeleteTask(taskName, 0);
        }

        /// <summary>
        /// get all tasks
        /// </summary>
        public static IRegisteredTaskCollection GetAllTasks()
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();
            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\");
            IRegisteredTaskCollection tasks_exists = folder.GetTasks(1);
            return tasks_exists;
        }

        /// <summary>
        /// check task isexists
        /// </summary>
        /// <param name="taskName"></param>
        /// <returns></returns>
        public static bool IsExists(string taskName)
        {
            var isExists = false;
            IRegisteredTaskCollection tasks_exists = GetAllTasks();
            for (int i = 1; i <= tasks_exists.Count; i++)
            {
                IRegisteredTask t = tasks_exists[i];
                if (t.Name.Equals(taskName))
                {
                    isExists = true;
                    break;
                }
            }
            return isExists;
        }

        /// <summary>
        /// 创建任务
        /// </summary>
        /// <param name="creator">创建任务的人员名称</param>
        /// <param name="taskName">任务名称</param>
        /// <param name="path">执行程序的路径</param>
        public void CreateTaskScheduler(string creator, string Description, string taskName, string path)
        {
            try
            {
                if (IsExists(taskName))
                {
                    return;
                }

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");

                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author = creator;//creator
                task.RegistrationInfo.Description = Description;//description

                task.Principal.RunLevel = _TASK_RUNLEVEL.TASK_RUNLEVEL_HIGHEST;

                //set trigger  (IDailyTrigger ITimeTrigger)
                task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;

                task.Settings.RunOnlyIfIdle = true;
                task.Settings.ExecutionTimeLimit = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;//只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;//仅当计算机空闲下才执行
                task.Settings.Priority = 0;

                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                    (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                    null, // password
                                                                    _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                    "");
            }
            catch (Exception ex)
            {

            }
        }
}

总结:

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

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

时间: 2024-11-10 14:02:47

Win7 开机启动的相关文章

win7如何设置开机启动项

想必有很多人都很关心自己的电脑开机速度吧,当然改善开机的方式有很多,这里为大家介绍的是设置开机启动项,当我们电脑的开机启动项过多,开机的时候就会一一加载,这样就会导致开机速度变得很慢,我们可以尽量减少程序开机启动项,但是一些电脑新手却不知道要怎么设置,那么现在就跟大家分享一下win7如何设置开机启动项吧. 方法一. 1.首先打开"开始菜单-运行",在运行对话框中输入msconfig,回车打开系统配置界面: 2.然后在弹出来的配置窗口中切换到"启动"选项卡,在列表中将

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

如何将自己的exe程序设置为开机自启动 如何将自己的exe程序设置为开机自启动 将自己的exe程序设置为开机自启动话不多说,直接看 首先1:cmd—>regedit 其次找到下面的路径就可以:(以win10为例)计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\LenovoDisabled(这个是本机电脑的,各电脑不尽相同) 请看流程: 具体文件设置如下: 到这里差不多就结束了,重启下可以试试,彩蛋:相信大家也

win7 系统下开机启动

1.开机启动查看 运行: msconfig --> 点击"启动"标签 2.开机项添加:将 .exe/.bat 等运行文件(或者快捷方式)放入 开始-->所有程序-->Startup  文件夹 例:开机打开某文件夹 先创建 *.bat文件(名字自创),右击文件--编辑,添加以下代码: 打开本地磁盘: start C:\ 打开局域网共享文件(需IP地址): start \\192.168.1.100\share\ 保存文件,将 *.bat文件放入 Startup 文件夹(

如何给自己编写的程序隐蔽的设置开机启动

比如说,我们自己编写了一个C#的程序,想设置为开机自动启动.当然我们可以从网上找到方法,一般的做法就是修改注册表文件,找到开机启动项,然后把这个程序的路径写入到某个节点就可以.如下截图所示,这些都是开机后会自动启动的程序. 有时候我们可能会有一些很顽皮的想法,我们希望自己程序在别人的电脑上运行的时候,暗地里把自己设置为开机启动.现在就有一些问题,因为现在电脑上都装有杀毒软件,比如说360,你修改注册表开机启动项,属于敏感操作,会被安全卫士拦截,然后提示用户正在有软件试图修改开机启动项,询问用户是

C# 将当前应用程序写入到注册表开机启动项中

在使用C#进行应用程序的开发过程中,经常有一个需求就是让应用程序开机后自动启动,这个是一个很常见的需求,最常规的做法(这里以Win7操作系统为例),打开:开始=>所有程序=>启动文件夹(路径是:C:\Users\bobo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup),然后可以将exe(这里以X.Shell.exe为例来说明)或者其快捷方式放到当前文件夹下面,这样我们就可以在应用程序下次启动的时候自动启动当前应用程序

开机启动项以及远程会话设置

开机启动项的配置查看: msconfig --搜索时输入(win7.windows2008r2等) 添加启动程序: 可以在如下路径 C:\Users\administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 放入想要启动的脚本命令(通常是.bat)  如以开机启动ssms为例,在上述路径下创建文件 ssms.bat  内容为 start ssms.exe 之后再查看开机启动的配置页面 就可以发现已加入其

node-webkit设置程序开机启动

上一篇写了打包脚本中设置安装时开机启动,这一篇写由node.js来控制程序是否随windows系统开机启动. 首页在项目package.json中加入对windows-shortcuts的引用(手动下载地址https://github.com/j201/windows-shortcuts) "dependencies": { "windows-shortcuts":"*" } 在npm install windows-shortcuts,加入快捷

vista下开机启动 简单绕过UAC的方法(自己使用runas参数重新启动自己,有点意思)

背景      vista下,如果不开启UAC,那就没有我下面要说的问题了,呵呵.下面说的都是在vista开启UAC的前提下说的,win7也适用.      在vista下,系统开启了UAC,如果你的软件通过manifest进行了提权(提升到管理员权限),那么exe上面会打上一个“小盾”的图标,这种程序启动的时候,会激活UAC保护机制,弹一个全局对话框出来询问用户是否允许启动,这就是微软标榜的灰常灰常的安全,到底安全不安全,先不讨论了,呵呵!现在一切都很和谐,没有问题,多点一下就多点下呗,但是如

win7开机按F8后,为什么没有修复计算机的选项

有时win7开机按F8后,没有修复计算机的选项 本文将向大家介绍如何通过 Windows 7自带的"配置 Windows 恢复环境(RE)"命令 – ReagentC.exe,启用"高级启动选项"下的"修复计算机"选项.单击 Windows 开始图标,在"搜索程序和文件"输入框中键入"cmd",在搜索结果中用鼠标右键单击"cmd.exe",并在弹出的列表中单击"以管理员身份运行