質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

1回答

2500閲覧

今ログインしているユーザの権限を知りたい

moshi

総合スコア90

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

1クリップ

投稿2018/10/03 06:35

編集2018/10/03 08:35

前提・実現したいこと

golangの学習中です。

golangを使って現在Windowsにログインしているユーザの権限を取得してAdministrator権限かどうかのチェック処理を行いたいです。

どのようにユーザの権限を取得するかどなたかご助力お願いします!

試したこと

いただいた回答を参考に

package main import ( "os/user" ) func main() { x, _ := user.Current() print(x.Uid) }

を実行したところ、
"S-1-5-21-domain部-1002"
が表示されました。

末尾544がAdministrator権限を持つということだったので
これを見た限り今のユーザはAdministrator権限とは違うようです。

でも、[Windowsの設定]>[アカウント]>[ユーザーの情報]を確認すると
〇〇(ユーザー名)
ローカルアカウント
管理者
との記載がありました。

なぜ管理者なのにUidが544にならないのでしょうか?

よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Windows 10
golang

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

管理者権限かどうかのチェック処理を行いたい

環境変数 UID が0ならroot権限です。

投稿2018/10/03 07:38

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2018/10/03 07:40

「管理者」が何を指すのか書いてないので、rootと読み替えました。 どのOSの話かも書いてないので、Linux or MacOSと読み替えました。 知りたいことをちゃんと伝えるためにちゃんと情報を書きましょう。
moshi

2018/10/03 07:49

質問の仕方が悪かったみたいですすみません 今度から気を付けます! 管理者は「Administrator」を指します。 OSは「Windows」です。
mather

2018/10/03 07:57

で、タグにひっそりとつけているようですが、これも質問に書かれていないことなので聞きましょう。 Golangで取得したいんですよね?
moshi

2018/10/03 08:00

その通りです。Golangの学習中です。 不足が多くてすみません
mather

2018/10/03 08:02

https://golang.org/pkg/os/user/#User type User struct { // Uid is the user ID. // On POSIX systems, this is a decimal number representing the uid. // On Windows, this is a security identifier (SID) in a string format. // On Plan 9, this is the contents of /dev/user. Uid string https://prev.net-newbie.com/samba/windows-sid.html > S-1-5-domain-544 Administrators ビルトイン グループ。オペレーティングシステムの最初のインストール後、このグループの唯一のメンバは、Administrator アカウントです。
mather

2018/10/03 08:05

練習がてら質問の内容を更新してわかりやすい質問に変えておくことをオススメします。 最初に表示される質問テンプレートはいきなり無視しないでくださいね。 あの文脈に沿って自分の質問事項をきちんと整理してみましょう。
moshi

2018/10/03 08:20

テンプレートがあったのですね。。 テンプレートをオンにして質問するようにします 回答していただいたことについて質問があります。 さきほど試しに x, _ := user.Current() をデバッグしてみたところ戻り値のUser構造体のUidに "S-1-5-21-domain-1002"という値が入っていました。 でも、[Windowsの設定]>[アカウント]>[ユーザの情報]を見ると管理者と書かれていたのですが 最後が”544”でなければ今のユーザはAdministrator権限がないということになるのでしょうか?
mather

2018/10/03 08:41

Gid, Username も出力してデバッグしてみてください。
moshi

2018/10/03 09:00 編集

Uid: "S-1-5-21-domain部-1002" Gid: "S-1-5-21-domain部-513" Username: "PC-001\tana" となりました。 いらないかもしれませんが残りのメンバは Name: "" HomeDir: "C:\Users\tana" となっています。
mather

2018/10/03 09:15 編集

S-1-5-21-domain部-513 はドメインユーザーグループ(通常のユーザーが入るグループ)ですね。
moshi

2018/10/04 09:15

すみません理解できなかったのですが この方法では管理者権限で実行しているかどうかは判別できないということでしょうか? 管理者権限で実行しているなら544になるとおききしたので。。。
mather

2018/10/04 16:30 編集

つまりAdministratorではないということかと。 「管理者と書かれていた」というのはおそらくアカウントの管理者などの意味で、「管理者として実行」などの管理者とは違うと思います。
moshi

2018/10/05 00:38

おはようございます。 このソースにUIDとGIDをファイルに出力するようにコードを修正してビルドしてexeファイルを作成しました。 そのexeファイルを『管理者として実行』してみましたが、UIDとGIDは普通に起動したときと同じでした。 監理者として実行すれば取得したUIDかGIDが変わるのではないかと思ったのですが…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問