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 ?
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!