[.Net] Exécuter une application DotNet au démarrage de Windows

dotnet autostart

Pour un de mes projets (EasyLight, plus de détails prochainement) qui mêle Arduino et DotNet, j’ai eu à développer pas mal de fonctions qui peuvent être réutilisées dans pas mal de projets.

Une des choses que je suis souvent amené à faire est de lancer une application DotNet au démarrage de Windows.

Pour démarrer automatiquement votre application, vous avez plusieurs solutions:

  • Créer un service Windows qui exécutera votre application au démarrage de Windows. Le problème de cette solution est qu’elle n’est utilisable que pour des applications en tâche de fond sans interface graphique.
  • Ajouter une clé dans la base de registre qui exécutera votre logiciel DotNet une fois que Windows est lancé.

C’est cette seconde méthode que j’utilise sur plusieurs de mes logiciels. Voici la fonction qui permet de démarrer automatiquement votre logiciel au démarrage de Windows:

'Fonction qui permet le demarre de l'executable en meme temps que Windows
Public Sub CheckAutoStart()
	Dim Assembly As Assembly = Application.ResourceAssembly
	Dim ExePath As String = (New Uri(Assembly.GetExecutingAssembly().GetName().CodeBase)).LocalPath
	Dim AssemblyName As String = Split(Assembly.FullName, ",").First
	Dim RegistryKeyName As RegistryKey
	Try
		RegistryKeyName = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", True)
		If My.Settings.AutoStart Then
			RegistryKeyName.SetValue(AssemblyName, ExePath)
		Else
			If RegistryKeyName.GetValue(AssemblyName) IsNot Nothing Then
				RegistryKeyName.DeleteValue(AssemblyName)
			End If
		End If
	Catch ex As Exception
		'on ne fait rien
	End Try
End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *