• ベストアンサー

VBScripで管理者権限のチェック

VBScripで管理者権限のチェックをするには、どうコーディングすればいいですか。 管理者権限があれば、フォルダを削除、なければ処理をしなくしたいと思っています。 初心者ですのでアドバイスよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • junkUser
  • ベストアンサー率56% (218/384)
回答No.3

>そのPCの持ち主がログオンした場合は、削除し >別のユーザーがドメインでログオンした場合は削除せず、エラーを出したいです。 >権限のチェックをせずにOn Error Resume Next でも可能でしょうか? 削除したいフォルダが、「PCの持ち主」にしか削除できないアクセス権設定になっているのであれば可能です。 #------- On Error Resume Next ' フォルダ削除のコードをここに書く If Err.Number <> 0 Then WScript.Echo "削除する権限がありません" End If #------ Err.Number = 0 であれば削除成功、それ以外では削除失敗です。

pt-vicente
質問者

お礼

ありがとうございます。 無事やりたいことが実現できました。 LANDeskでの配布も問題ありませんでした。

その他の回答 (2)

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

条件をもっと限定してはいかがでしょうか。 ・初心者とは何か?  パソコン初心者か?  VBScript初心者か?   ・使用するユーザーはローカルユーザーか、ドメインユーザーか?  ローカルユーザーとは、コンピュータ自身で作成したユーザーのことです。 ・OSは何か?  OSやパッチの適用状況によって動作しないことがあるため、分かる範囲で書いたほうがよいでしょう。  # No.1 さんのスクリプトはVistaでは動作しませんでした・・・ ・管理者権限はAdministratorsだけでよいのか?  グループがネストしている(グループの中にグループがある状態)可能性を考慮する必要がありますか? ・最終結果として、どのような条件でもフォルダが削除できさえすればよいのか?エラーが発生しなければよいのか?  たとえば、On Error Resume Next でフォルダを削除すれば、ユーザーの権限不足によって失敗してもエラー表示が出ません。

pt-vicente
質問者

補足

VBScript初心者です。 使用するユーザー:ドメインユーザー OS:XP Pro ドメインユーザーでの権限はDomain Userでした。 詳しくは分からないのですが、やりたいことは そのPCの持ち主がログオンした場合は、削除し 別のユーザーがドメインでログオンした場合は削除せず、エラーを出したいです。権限のチェックをせずにOn Error Resume Next でも可能でしょうか?

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

私も実際に利用したことがないですが、ADSIというものを利用するようですね。 ローカルPCの管理者権限ということであれば Dim User,PcName Dim objWNet,objGroup,objUser Dim Admin   'Networkオブジェクトの取得   Set objWNet = CreateObject("WScript.Network")   'PC名の取得   PcName = objWNet.ComputerName   '現ユーザー名の取得   User=objWNet.UserName   'ネットワークオブジェクトを開放   Set objWNet=Nothing   'ローカルマシンのAdiministratorsグループを取得   Set objGroup = GetObject("WinNT://" & ComputerName & "/Administrators")   For Each objUser In objGroup.Members()     If User = objUser.Name Then       Msgbox "あなた(" & UserName & ")は管理者です。"       Exit For     End If   Next   Set objGroup=Nothing   Set objUser=Nothing こんな感じでどうでしょうか? 識者から見れば稚拙なスクリプトですが、管理者かどうかは判断できます。

関連するQ&A