Maison >développement back-end >Golang >Comment puis-je exécuter mon application Go avec des privilèges d'administrateur sans élévation manuelle de l'UAC ?

Comment puis-je exécuter mon application Go avec des privilèges d'administrateur sans élévation manuelle de l'UAC ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-08 22:40:02721parcourir

How can I run my Go application with administrator privileges without manual UAC elevation?

Obtention des privilèges d'administrateur pour les applications Windows dans Go

Dans cette discussion, nous abordons un problème courant auquel sont confrontés les développeurs qui souhaitent accorder leur Les applications Windows ont la possibilité de s'exécuter avec des privilèges d'administrateur sans que l'utilisateur ait à sélectionner manuellement « Exécuter en tant qu'administrateur ». Nous commençons par comprendre le scénario sous-jacent.

Considérez le code Go suivant, qui tente d'écrire dans un fichier protégé dans le répertoire Windows :

package main

import (
    "fmt"
    "io/ioutil"
    "time"
)

func main() {
    err := ioutil.WriteFile("C:/Windows/test.txt", []byte("TESTING!"), 0644)
    if err != nil {
        fmt.Println(err.Error())
        time.Sleep(time.Second * 3)
    }
}

Lors de son exécution, ce code rencontre un " L'accès est refusé", indiquant que l'application ne dispose pas des privilèges nécessaires. Alors que la sélection manuelle de « Exécuter en tant qu'administrateur » accorderait les autorisations requises, nous recherchons une solution automatisée.

Pour répondre à ce besoin, nous introduisons une technique ingénieuse qui exploite le mécanisme de contrôle de compte d'utilisateur (UAC) Windows :

package main

import (
    // ... Same imports
)

func main() {
    // Check if running as administrator
    if !amAdmin() {
        // Relaunch application with elevated privileges using UAC prompt
        runMeElevated()
    }
    // ...
}

La fonction clé, runMeElevated(), utilise l'API Windows ShellExecute pour relancer l'application avec le verbe "Exécuter en tant qu'administrateur", invitant efficacement l'utilisateur pour autorisation :

func runMeElevated() {
    // ... Same implementation
}

Cette technique permet à l'application de s'exécuter en tant qu'utilisateur standard pour la plupart des tâches et d'élever ses privilèges uniquement lorsque cela est nécessaire, offrant ainsi une expérience transparente aux utilisateurs. Pour une implémentation plus détaillée et des informations sur l'implémentation, reportez-vous à la ressource suivante :

[UAC Prompt in Go using ShellExecute](https://gist.github.com/jerblack/d0eb182cc5a1c1d92d92a4c4fcc416c6)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn