Go에서 Windows 애플리케이션에 대한 관리자 권한 획득
이 토론에서 우리는 자신의 권한을 부여하려는 개발자가 직면하는 일반적인 문제를 조사합니다. Windows 애플리케이션은 사용자가 "관리자 권한으로 실행"을 수동으로 선택할 필요 없이 관리자 권한으로 실행할 수 있는 기능입니다. 기본 시나리오를 이해하는 것부터 시작합니다.
Windows 디렉터리의 보호된 파일에 쓰기를 시도하는 다음 Go 코드를 고려하세요.
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) } }
이 코드를 실행하면 " 액세스가 거부되었습니다." 오류는 애플리케이션에 필요한 권한이 부족함을 나타냅니다. "관리자 권한으로 실행"을 수동으로 선택하면 필요한 권한이 부여되지만 우리는 자동화된 솔루션을 찾고 있습니다.
이러한 요구를 해결하기 위해 Windows 사용자 계정 컨트롤(UAC) 메커니즘을 활용하는 독창적인 기술을 소개합니다.
package main import ( // ... Same imports ) func main() { // Check if running as administrator if !amAdmin() { // Relaunch application with elevated privileges using UAC prompt runMeElevated() } // ... }
핵심 함수인 runMeElevated()는 Windows ShellExecute API를 사용하여 "관리자 권한으로 실행" 동사를 사용하여 응용 프로그램을 다시 시작합니다. 사용자 권한:
func runMeElevated() { // ... Same implementation }
이 기술을 사용하면 애플리케이션이 대부분의 작업에 대해 표준 사용자로 실행되고 필요한 경우에만 권한을 상승시켜 사용자에게 원활한 환경을 제공할 수 있습니다. 더 자세한 구현 및 구현 정보는 다음 리소스를 참조하세요.
[ShellExecute를 사용하여 Go에서 UAC 프롬프트](https://gist.github.com/jerblack/d0eb182cc5a1c1d92d92a4c4fcc416c6)
위 내용은 수동 UAC 상승 없이 관리자 권한으로 Go 애플리케이션을 어떻게 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!