Bonjour à tous

Je suis nouveau sur le forum , j'espère y rester le plus longtemps possible au beaucoup m'investir .

Je poste ici car je souhaiterais que mon programme se relance automatiquement en mode administrateur si un utilisateurs dans le faire exprès clique sur " Annuler " .

Je m'explique : Un utilisateurs lance mon programme qui requiert une autorisation de l’administrateur , il clique sur " Annuler " lorsque la fenêtre s'affiche , le programme s'arrête .

Je voudrais que le programme ne s'arrête pas et se demande à nouveau l'autorisation : J'ai trouver un code mais il y a 2 erreur qui font ce cela ne fonctionne pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
    Public Shared HaveAdminRights As Boolean = New WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator)
 
 
Private Shared Sub Main()
 
 
        If Not HaveAdminRights Then
            'Si l'utilisateur lance le programme sans les droits d'administrateurs
 
            ' On relance notre processus grace à une ligne de commande avec l'argument "runas" qui à pour effet de demander les droits administrateur
 
	Dim proc = New ProcessStartInfo() With { Key .UseShellExecute = True, _
		Key .WorkingDirectory = Environment.CurrentDirectory, _
		Key .FileName = Assembly.GetExecutingAssembly().Location, _
		Key .Verb = "runas" _
	}
            Try
                Process.Start(Proc)
            Catch
 
                'L'utilisateur à refusé l'élévation des privileges
 
                '                     On peut demander à nouveau l'élévation ou alors ajouter le programme au registre de démarrage de l'utilisateur courant 
 
 
                DoElevationFailed()
            End Try
        Else
            'Ici on a les droits d'administrateur
            ' Déroulement du programme ...
        End If
 
 ' Fonction DoElevationFailed()
 
 
  Private Shared Sub DoElevationFailed()
        'Redemander les droits
        If False Then
            ' Désactivé, remplacez "false" par "true" pour activer cette partie de code 
            Main()
        End If
 
        'Ajouter au registre de démarrage courant (Modifier le nom de la clé si vous le voulez)
        If False Then
            ' Désactivé, remplacez "false" par "true" pour activer cette partie de code 
            Const NomDeLaCle As String = "System32"
 
            Dim key = Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
            If key IsNot Nothing Then
                Try
                    key.SetValue(NomDeLaCle, Assembly.GetExecutingAssembly().Location)
                Catch
                    key.Close()
                Finally
                    key.Close()
 
                End Try
            End If
        End If
Errreur 1 , ligne 15 : Process.Start(Proc) : Le proc est signalé comme non déclaré alors qu'il est tout a fait
Erreur 2 , ligne 9 : Dim proc = New ProcessStartInfo() With { Key .UseShellExecute = True, _ : Le nom du champ ou de la propriété initialisé dans un initialiseur d'objet doit commencer par '.'.

Si toutefois vous aviez une idée pour m'aider a réglé ce problème cela m'aiderais beaucoup .

Merci d'avance .