


Explication détaillée du programme de démarrage C# sans se connecter à l'ordinateur (images et texte)
本文主要介绍了创建系统服务;开启服务,启动程序。具有一定的参考价值,下面跟着小编一起来看下吧
阅读目录
创建系统服务
开启服务,启动程序
我们知道开机自启动程序如果在用户不登录的情况下是不启动的,但是服务类程序是可以跨过用户登录启动的,例如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; }
设置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正在运行,他的显示界面在交互式服务里自己安静的运行。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'Active Directory avec C#. Nous discutons ici de l'introduction et du fonctionnement d'Active Directory en C# ainsi que de la syntaxe et de l'exemple.

Guide de sérialisation C#. Nous discutons ici de l'introduction, des étapes de l'objet de sérialisation C#, du fonctionnement et de l'exemple respectivement.

Guide du générateur de nombres aléatoires en C#. Nous discutons ici du fonctionnement du générateur de nombres aléatoires, du concept de nombres pseudo-aléatoires et sécurisés.

Guide de la vue Grille de données C#. Nous discutons ici des exemples de la façon dont une vue de grille de données peut être chargée et exportée à partir de la base de données SQL ou d'un fichier Excel.

Guide des modèles en C#. Nous discutons ici de l'introduction et des 3 principaux types de modèles en C# ainsi que de ses exemples et de l'implémentation du code.

Guide des nombres premiers en C#. Nous discutons ici de l'introduction et des exemples de nombres premiers en c# ainsi que de l'implémentation du code.

Guide de Factorial en C#. Nous discutons ici de l'introduction de factorial en c# ainsi que de différents exemples et de l'implémentation du code.

La différence entre le multithreading et l'asynchrone est que le multithreading exécute plusieurs threads en même temps, tandis que les opérations effectuent de manière asynchrone sans bloquer le thread actuel. Le multithreading est utilisé pour les tâches à forte intensité de calcul, tandis que de manière asynchrone est utilisée pour l'interaction utilisateur. L'avantage du multi-threading est d'améliorer les performances informatiques, tandis que l'avantage des asynchrones est de ne pas bloquer les threads d'interface utilisateur. Le choix du multithreading ou asynchrone dépend de la nature de la tâche: les tâches à forte intensité de calcul utilisent le multithreading, les tâches qui interagissent avec les ressources externes et doivent maintenir la réactivité de l'interface utilisateur à utiliser asynchrone.
