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

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

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

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

480閲覧

インストーラーを起動したのが管理者権限かどうかをチェックする方法

moshi

総合スコア90

Go

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

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2018/10/12 02:55

Windowsのインストーラーを作成しようと思っています。
そのインストーラーを起動した人が管理者権限で実行したかどうかを調べたいです。
(管理者権限で実行していなかったらメッセージを出して終了する。のようにしたいです。)

ネット上で調べると現在のユーザーの権限を取得する、というのは出てくるのですが
そのインストーラーを実行した人が「管理者権限で実行」をしたかどうかを確認する方法が見つかりませんでした。
どのような手法を用いれな上記の情報が取得できるか、どなたかご存知でしたら教えてください。

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

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

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

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

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

papinianus

2018/10/12 03:41

GoとVBScriptのタグなのですが、どちらですか?どちらでも良い?
moshi

2018/10/12 04:36

VBSの場合Goのほうから呼び出して使うことになるのでできればGoがいいですが、どちらでもいいです!
guest

回答2

0

ベストアンサー

lang

1package main 2import ( 3 "syscall" 4 "fmt" 5) 6func main() { 7 shell32 := syscall.MustLoadDLL("shell32.dll") 8 defer shell32.Release() 9 IsUserAnAdmin := shell32.MustFindProc("IsUserAnAdmin") 10 is_admin,_,_ := IsUserAnAdmin.Call() 11 fmt.Printf("is admin? %#v", is_admin == 1) 12}

投稿2018/10/12 04:47

編集2018/10/12 04:49
asm

総合スコア15147

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

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

moshi

2018/10/12 05:27

回答ありがとうございます! まさにやりたいことを書いてくださったのでベストアンサーにさせていただきました。 ちなみになんですが、この「IsUserAnAdmin」を別の文字列に変更すると他の権限も見れたりしますか? 例)IsUserAUsers みたいにすれば一般ユーザであることがわかる、など
asm

2018/10/12 06:56

簡単に判別できるのは管理者権限だけです。 あとはCheckTokenMembershipやSHTestTokenMembershipを使うことになるでしょう
guest

0

直接的には無いんじゃないかと思います(自信無しですが)。
fsutilのような管理者権限でないと実行できないコマンドを実行してみて、エラーになるかどうかで判断するとか(fsutilは管理者権限でオプション無しで実行するとヘルプが出るだけなので無害です)。
ただし、GUIアプリでこれをやると、黒いコマンドプロンプト画面が一瞬出ると思います。

投稿2018/10/12 04:18

otn

総合スコア84557

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

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

moshi

2018/10/12 05:24

なるほど、そういったアプローチもあるのですね! 勉強になりました。 今回はより欲しかった回答が別の方から得られたためそちらをベストアンサーにします。すみません。 回答ありがとうございました!
otn

2018/10/12 05:25

ああ、VBScriptじゃなくてGoの質問でしたか。
moshi

2018/10/12 05:28

すみません。書き方が紛らわしかったですね。。。 Goでソースを書いているのでできればそちらで、、という記述をすべきでした。 以後質問の仕方を気を付けます。
moshi

2018/10/12 05:51

重ねてすみません。 きっと覚えてはないと思うのですが数年前に本当にプログラミング初心者で右も左もわからなかったころにもotnさんに回答と励ましの言葉をいただきました。 まだこんな浅い質問をしていて恥ずかしいのですが、おかげさまで途中で挫折することなく今も続けられております。 こういうことを言う場ではないとは思いますが、本当に感謝しております。ありがとうございました。
otn

2018/10/12 07:17

すいません。憶えてません。励ます事はあまりないのですが^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問