- ベストアンサー
VBScripで管理者権限のチェック
VBScripで管理者権限のチェックをするには、どうコーディングすればいいですか。 管理者権限があれば、フォルダを削除、なければ処理をしなくしたいと思っています。 初心者ですのでアドバイスよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>そのPCの持ち主がログオンした場合は、削除し >別のユーザーがドメインでログオンした場合は削除せず、エラーを出したいです。 >権限のチェックをせずにOn Error Resume Next でも可能でしょうか? 削除したいフォルダが、「PCの持ち主」にしか削除できないアクセス権設定になっているのであれば可能です。 #------- On Error Resume Next ' フォルダ削除のコードをここに書く If Err.Number <> 0 Then WScript.Echo "削除する権限がありません" End If #------ Err.Number = 0 であれば削除成功、それ以外では削除失敗です。
その他の回答 (2)
- junkUser
- ベストアンサー率56% (218/384)
条件をもっと限定してはいかがでしょうか。 ・初心者とは何か? パソコン初心者か? VBScript初心者か? ・使用するユーザーはローカルユーザーか、ドメインユーザーか? ローカルユーザーとは、コンピュータ自身で作成したユーザーのことです。 ・OSは何か? OSやパッチの適用状況によって動作しないことがあるため、分かる範囲で書いたほうがよいでしょう。 # No.1 さんのスクリプトはVistaでは動作しませんでした・・・ ・管理者権限はAdministratorsだけでよいのか? グループがネストしている(グループの中にグループがある状態)可能性を考慮する必要がありますか? ・最終結果として、どのような条件でもフォルダが削除できさえすればよいのか?エラーが発生しなければよいのか? たとえば、On Error Resume Next でフォルダを削除すれば、ユーザーの権限不足によって失敗してもエラー表示が出ません。
補足
VBScript初心者です。 使用するユーザー:ドメインユーザー OS:XP Pro ドメインユーザーでの権限はDomain Userでした。 詳しくは分からないのですが、やりたいことは そのPCの持ち主がログオンした場合は、削除し 別のユーザーがドメインでログオンした場合は削除せず、エラーを出したいです。権限のチェックをせずにOn Error Resume Next でも可能でしょうか?
- Masa2072
- ベストアンサー率51% (94/182)
私も実際に利用したことがないですが、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 こんな感じでどうでしょうか? 識者から見れば稚拙なスクリプトですが、管理者かどうかは判断できます。
お礼
ありがとうございます。 無事やりたいことが実現できました。 LANDeskでの配布も問題ありませんでした。