【理想】
既にSQLServerExpress2005以降(以下SQL)が入っているPCに対して、
SQLの管理者権限がないユーザーがインストーラーを実行した際、
・このユーザーは管理権限がないこと
・管理権限があるユーザーは○○というユーザーなので、○○というユーザーで
ログインし直してからインストールして欲しい
というメッセージを出したい
【現状】
SQLをデータベースとして開発したソフトウェアがあり、
インストーラーを実行すると、SQLと開発したソフトウェアが自動インストールされるようになっています。(既にSQLがインストールされている場合はSQLはインストールしない)
インストーラーは、Inno Setupを利用しています。
ここで問題になっているのが、
既にSQLがインストールされているPCにインストールしてもらった際に、
SQLの管理者ではないユーザーでインストールしようとするとエラーになることです。
ユーザーに上記を伝えて、権限のあるユーザーでやり直してもらって(もしくは一旦SQLをアンインストールして)、再度上記インストーラーを実行してもらう必要があるのですが、権限のあるユーザーが誰か答えられるユーザーがほどんどいません。
今は、インストーラーを実行した際、既にインストールされていれば、
仮のデータベースを作るテストをしてみて、出来ればOK、出来なければ、「インストール出来ないから管理権限のあるユーザーでログインしてほしい」のようなメッセージを出してセットアップを中止するようにしています。
インストーラーを実行した際、管理権限のあるユーザーが誰なのかが分かる方法はないでしょうか。色々試してみたのですが、「管理者権限がない」という応答しか返って来ません。
同様の悩み(対応)は他のソフトでも同様だと思いますが、
どのように解決しているのかを教えて頂ければ助かります。
分かる方ご教授お願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
「管理者権限のあるユーザーでインストールすること」 という注意だけで済む話だと思うんだけど。
インストーラーがわざわざ 「あなたは管理者権限をもっていません。一度ログオフして 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()
この回答への補足
ありがとうございます。
調べたいのは、SQLのサーバーロールにadmin権限があるユーザーが誰かということです。OSのadminにSQLの管理権限があるとは限らないので困っています。
1台ずつ私たちが出向できればいいのですが、基本はWeb配布なので一般の方が自身でインストールすることになります。
その際に既にSQLがインストールされているPCでこのトラブルが多いので何とかならないかと思い投稿しました。
No.2
- 回答日時:
sp_helpsrvrolemember というストアド プロシージャを使えば指定したサーバーレベル ロールのメンバーを得ることができます。
VBScript 等で SQL Server にアクセスして上記プロシージャが返すレコードを展開すれば良いかと。
しかしそれなりの権限があるユーザーで実行しないと取得できないと思います。
この回答への補足
回答ありがとうございます。
既にそのプロシージャと同じ情報をSQLで取得するようになっています。
他のSQLServerを利用したソフトウェアはどうやってこのあたりの問題の解決しているのでしょうか。もしくは既にSQLが入っているPCにはインストール不可とかってしてるんでしょうか。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- その他(開発・運用・管理) ユーザ権限でソフトを起動すると必ず管理者パスワードをきかれてうまく利用できない 3 2022/05/10 00:07
- UNIX・Linux Ubuntu on Xorgのログインについて 2 2023/08/10 15:16
- Windows 10 Win11アカウント権限を。Adminにアップグレードできないものでしょうか? 5 2023/03/24 11:24
- WordPress(ワードプレス) ワードプレスの管理画面でユーザー名が違うと出るのですがどこで設定したユーザー名を打てばいいのでしょう 1 2022/03/31 19:36
- SQL Server SQLのクエリの書き方 1 2022/03/29 23:06
- Windows 10 別ユーザーでログインした際、表示されないのソフトの探し方 1 2022/07/15 10:26
- グループウェア Macでオープンオフィスが開きません 1 2023/01/14 14:22
- Google Drive Googleマイドライブの共有”リンクを知っている全員”の期限設定 1 2023/01/19 10:33
- ソフトウェア ソフトインストール 2 2022/04/25 18:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL Date型の列から年月だけを...
-
ACCESS2007 フォーム 「バリア...
-
Accessの重複なしのカウントの...
-
sqlserverで対象のレコードを削...
-
SQL 不要な文字列を削除したい
-
[SQLServer] テーブル名からカ...
-
ACCESSで表が作りたく、そのた...
-
SQL文 複数実行
-
SQLサーバで和暦から西暦に変換...
-
SQLのエラー(~付近に不適切な...
-
時給毎の勤務時間を求めるSQL
-
SQLCMDにて教えていただきたい...
-
【VB.NET】日付型の列にNULLを...
-
SQLで各グループごとの最大値の...
-
SQL 四分位を組み込む
-
SQLサーバー接続 特定のPCがWin...
-
枝番と主キーがある複数テーブ...
-
SQLServer 日付が直前のレコー...
-
<SQL>重複しているデータの場合...
-
sqlで、600行あるテーブルを100...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でQuickTimeがインス...
-
Windows10がインストールできま...
-
Universalインストーラが勝手に...
-
PostgreSQLを完全に削除出来ない
-
exp、impについて
-
Oracle9iを再インストールす...
-
Crystal Report for VB
-
MySQLがインストールできない
-
SQL ExpressエディションのCPU...
-
postgresqlの国際化言語のサポ...
-
64bitサーバにOracleが作成でき...
-
大至急!mdfファイルの中身を見...
-
リスナーが起動しません
-
SQL SERVER 2008 EXPRESS エラ...
-
postegresSQLのパスワード
-
Npgsql.dllをバージョン指定で...
-
svrmgrl起動時のTNSプロトコル...
-
Oracle RacにおけるSSH接続設定...
-
PostgreSQLでのスーパーユーザ削除
-
Illustrator CS3の再インストー...
おすすめ情報