Go で Windows アプリケーションの管理者権限を取得する
このディスカッションでは、Windows アプリケーションの管理者権限を付与しようとする開発者が直面する一般的な問題について詳しく掘り下げます。 Windows アプリケーションは、ユーザーが手動で「管理者として実行」を選択しなくても、管理者権限で実行できる機能。まず、基礎となるシナリオを理解することから始めます。
次の Go コードを考えてみましょう。このコードは、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) } }
実行すると、このコードは "アクセスが拒否されました」というエラーが発生し、アプリケーションに必要な権限がないことを示します。 「管理者として実行」を手動で選択すると必要な権限が付与されますが、私たちは自動化されたソリューションを模索しています。
このニーズに対処するために、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 中国語 Web サイトの他の関連記事を参照してください。