- ベストアンサー
SQLの管理権限のあるユーザーを調べたい
- SQLの管理者権限のないユーザーに対して、インストーラーの実行時に管理権限のあるユーザーでログインするように要求する方法を知りたいです。
- 既にSQLがインストールされているPCにインストールしようとするとエラーが発生し、管理権限のあるユーザーでリトライする必要があります。
- インストーラーを実行した際に、管理権限のあるユーザーが誰なのかを特定する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「管理者権限のあるユーザーでインストールすること」 という注意だけで済む話だと思うんだけど。 インストーラーがわざわざ 「あなたは管理者権限をもっていません。一度ログオフして xxxx または yyyy または zzzz でログインしてから再度インストーラーを実行してください。」 とか言う? というか Inno Setup って使ったことないけど設定でセットアップ実行中のユーザーが Admin 権限を持っているか確認できるようにできるんじゃないの? どうしても実現させたいっていうなら、Inno Setup がプログラムのセットアップよりも前に下のような VBScript を実行するとか。 Option Explicit Dim userNameList Dim strComputer strComputer = "." Dim objGroup Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators") Dim objUser For Each objUser In objGroup.Members If objUser.Class = "User" Then userNameList = userNameList & objUser.Name & vbCrLf End If Next WScript.Echo "このコンピューターの管理者権限を持つユーザー一覧:" & vbCrLf & userNameList またはコマンドプロンプトで net localgroup Administrators とさせるとか。 または net localgroup Administrators をVBScript で実行させるとか。 Set objShell = CreateObject("Wscript.Shell") strCommand = "net localgroup Administrators" Set objExec = objShell.Exec(strCommand) Do Until objExec.Status Wscript.Sleep 250 Loop Wscript.Echo objExec.StdOut.ReadAll()
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
sp_helpsrvrolemember というストアド プロシージャを使えば指定したサーバーレベル ロールのメンバーを得ることができます。 VBScript 等で SQL Server にアクセスして上記プロシージャが返すレコードを展開すれば良いかと。 しかしそれなりの権限があるユーザーで実行しないと取得できないと思います。
お礼
お礼が遅くなって申し訳ございません。 解決しました。ありがとうございました。
補足
回答ありがとうございます。 既にそのプロシージャと同じ情報をSQLで取得するようになっています。 他のSQLServerを利用したソフトウェアはどうやってこのあたりの問題の解決しているのでしょうか。もしくは既にSQLが入っているPCにはインストール不可とかってしてるんでしょうか。。。
お礼
非常に遅いお礼になって申し訳ございません。 助言頂いたように、コマンドプロンプトで事前にAdmin権限を調べて処理するロジックを追加しました。 アドバイスありがとうございました。
補足
ありがとうございます。 調べたいのは、SQLのサーバーロールにadmin権限があるユーザーが誰かということです。OSのadminにSQLの管理権限があるとは限らないので困っています。 1台ずつ私たちが出向できればいいのですが、基本はWeb配布なので一般の方が自身でインストールすることになります。 その際に既にSQLがインストールされているPCでこのトラブルが多いので何とかならないかと思い投稿しました。