C#不登录电脑启动程序

原文:C#不登录电脑启动程序

我们知道开机自启动程序如果在用户不登录的情况下是不启动的,但是服务类程序是可以跨过用户登录启动的,例如IIS服务,SQL服务。如果我们已经写好了桌面应用程序,又希望他开机自启动,那就需要借助系统服务在未登录的时候打开程序。

创建系统服务

在VS中创建Windows服务:

在Service的OnStart方法中,启动程序,代码如下:

    protected override void OnStart(string[] args)
    {
        if (!IsExistProcess("程序名"))
        {
            //程序路径
            string exePath = "";
            Process.Start(exePath);
        }
        string path = AppDomain.CurrentDomain.BaseDirectory;
        FileInfo fi = new FileInfo(path + "\\info.txt");
        using (FileStream stream = fi.OpenWrite())
        {
            StreamWriter streamWriter = new StreamWriter(stream);
            streamWriter.Write("服务启动日期:" + DateTime.Now.ToString());
            streamWriter.Flush();
            streamWriter.Close();
        }
    }

    protected override void OnStop()
    {
        string path = AppDomain.CurrentDomain.BaseDirectory;
        FileInfo fi = new FileInfo(path + "\\info.txt");
        using (FileStream stream = fi.OpenWrite())
        {
            StreamWriter streamWriter = new StreamWriter(stream);
            streamWriter.Write("服务关闭日期:" + DateTime.Now.ToString());
            streamWriter.Flush();
            streamWriter.Close();
        }
    }

    /// <summary>
    /// 判断进程是否开启
    /// </summary>
    /// <param name="processName"></param>
    /// <returns></returns>
    private bool IsExistProcess(string processName)
    {
        Process[] MyProcesses = Process.GetProcesses();
        foreach (Process MyProcess in MyProcesses)
        {
            if (MyProcess.ProcessName.CompareTo(processName) == 0)
            { return true; }
        }
        return false;
    }

在Service的设计视图添加安装程序:

设置ProcessInstaller的Account为LocalSystem
设置serviceInstaller的StartType为Automatic,ServiceName和Description为进程中显示的名字和描述

开启服务,启动程序

程序编译好,取出BIN文件夹,添加开启服务和关闭服务的批处理文件,如下图:

开启桌面程序的关键点,更改进程登录模式

安装后启动.bat内容为:

安装服务
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil AutoStart.exe
停止服务
sc stop AutoStartHik
更改登录
sc config AutoStartHik type= interact type= own
启动服务
sc start AutoStartHik

卸载服务.bat内容为:

段落引sc stop AutoStartHik
C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil AutoStart.exe /u

至此执行启动服务的bat文件后完成,开机自启动桌面程序。

注:有朋友在问题中提到了运行的问题,我在这里截张图
运行后的程序如果有和桌面交互的语句,会有以下提示,如你MessgeBox语句

点进去之后会有一个全新的桌面,上面运行着你通过服务启动的程序,如果和桌面不交互,你在进程里可以看到exe正在运行,他的显示界面在交互式服务里自己安静的运行。

时间: 2024-11-08 21:28:27

C#不登录电脑启动程序的相关文章

winXP系统电脑启动程序总提示“无法找到组件”怎么办及解决方法

二.非硬件故障出现的系统文件丢失 1.用电脑系统光盘重装或者系统修复; 2.利用一些常用的系统文件修复软件处理,如金山卫士中有系统修复和重装系统功能; 3.在系统光盘.从网络下载或者其它电脑的系统中提取所丢失的系统文件,复制到系统中,然后加载系统文件; 4.如果是非必需的系统文件可以在启动项里,禁止开机启动,或者从注册表里把相关项删除. 最新笔记本专用xp系统启动程序提示"无法找到组件"的解决方法就介绍到这边,电脑中经常出现无法找到组件提示,主要因为系统的组件文件遭到损坏,有需要的xp

win7电脑的开机启动程序不能更改怎么办?

  最近,有朋友发现了一个奇怪的问题,自己的ghost win7 64位旗舰版下载电脑居然无法更改开机启动程序,出现这种情况,我们要怎么办呢? 1.首先,咱们返回到win7电脑的桌面界面,然后找到其中的计算机图标,右键点击计算机图标,然后在下滑菜单中选择管理选项. 2.在打开的计算机管理界面中,咱们在左侧菜单栏中依次点击选择本地用户和组-用户,这样就可以在右侧的窗口中找到administrator选项了. 3.咱们双击打开administrator选项的设置窗口,然后将界面切换到常规这一栏中,咱

自己写的一个java程序,怎么在linux下设置成用户登录后启动?

问题描述 自己写的一个java程序,怎么在linux下设置成用户登录后启动? 我自己目前的办法是自己写了一个脚本,内容是:#!/bin/bashcd /ablationjava -jar newablation130222_fat.jar &然后在桌面终端下vi ~/.bash_profile 按i在文档的最后加入sh /ablation/auto.sh按esc然后按:w 回车键 但是这个办法不是很好,我希望通过纯代码实现,或者写一个脚本让java调用这个脚本在实现,请问各位该怎么办啊

Linux如何实现开机启动程序详解

Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核.请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存.因此,内核就必须完整地加载到可用RAM的第一个兆字节之内.为了实现这个目的,内核是被压缩

OpenSSH最流行的文件传输和远程登录Linux应用程序

OpenSSH是最流行的文件传输和远程登录Linux应用程序之一,它提供了多种在客户端和服务器之间建立加密的远程终端和文件传输连接的方式. OpenSSH Secure http://www.aliyun.com/zixun/aggregation/16458.html">Copy (SCP) 和 Secure FTP (SFTP) 程序是FTP的安全替代品, 同时Secure Shell (SSH) 常常被用作是TELNET的一个默认替代程序.OpenSSH 并不局限于Linux系统:

电脑启动黑屏的解决方法

电脑启动时出现黑屏,大多是由于接触不良或硬件损坏造成的.新装机或更换硬件不当较容易发生黑屏,如果更换硬件后产生黑屏,可能是硬盘或光驱数据线接反,系统检测CPU出错(超额时较易发生),板卡斜插导致的短路和接触不良,扩充的内存条不符合主板要求等原因,职称计算机专家告知电脑启动时黑屏可分为供电系统故障导致黑屏.不自检黑屏故障和自检失败黑屏故障三种类型,下面我们来看看其现象和原因. 1.供电系统故障导致黑屏故障现象 开机后主机面板指示灯不亮,听不到主机内电源风扇的旋转声和硬盘自检声,整个系统无声无息.此

电脑启动的时候要按下F1才可以进系统的解决办法

电脑启动的时候要按下F1才可以进系统 开机按F1键,这是因为你的BIOS设置不当但也能正常引导系统,属非致命性故障,按F1是在问你是否继续. 你没有安装软盘驱动器,但是在CMOS中设置了,开启软驱的选项. 方法是:开机按Del键,进入BIOS设置,选择第一个"基本设置",把floopy一项设置没"Disabel"无效就可以了. 2刚开始开机时按DEL进入BIOS,按回车键进入第一项,看看里面的"Drive A"项是不是"None&quo

如何解决Win7电脑启动慢

  一.定时清理电脑内灰尘 电脑内的灰尘容易造成部件加快老化,导致硬件的运行迟钝,甚至导致一些因接触不良而无法正常开机.比如风扇,不及时的清理容易造成电脑的温度过高,则就容易电脑开机慢.因此要定时电脑内的灰尘,尤其是台式机电脑,应该定时地关闭计算机,打开机箱,用吹风机或者冷风机吹吹,能有效地清理灰尘.而笔记本电脑,可以到一些专业的清理商店进行定时清洗. 二.开机启动项的优化关闭 有些不必要的启动项就禁止其开机自启动,开机启动项就保留输入法(Ctfmon).杀毒软件外,其他的程序都可以禁用. 查看

电脑启动更快的15种方法

电脑启动更快的15种方法 嫌电脑启动太慢是每个电脑迷的共同心病,让电脑启动更快是大家的共同心愿,本人在使用电脑过程中总结了加快电脑 启动速度的"十五式",与您分享. 一.BIOS的优化设置 在BIOS设置的首页我们进入"Advanced BIOS Features"选项,将光标移到"Frist Boot Device"选项, 按"PageUP"和"PageDOWN"进行选择,默认值为"Floppy