アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

>そのPCの持ち主がログオンした場合は、削除し


>別のユーザーがドメインでログオンした場合は削除せず、エラーを出したいです。
>権限のチェックをせずにOn Error Resume Next でも可能でしょうか?

削除したいフォルダが、「PCの持ち主」にしか削除できないアクセス権設定になっているのであれば可能です。
#-------
On Error Resume Next
' フォルダ削除のコードをここに書く
If Err.Number <> 0 Then
WScript.Echo "削除する権限がありません"
End If
#------
Err.Number = 0 であれば削除成功、それ以外では削除失敗です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/03 22:17

条件をもっと限定してはいかがでしょうか。


・初心者とは何か?
 パソコン初心者か?
 VBScript初心者か?
 
・使用するユーザーはローカルユーザーか、ドメインユーザーか?
 ローカルユーザーとは、コンピュータ自身で作成したユーザーのことです。

・OSは何か?
 OSやパッチの適用状況によって動作しないことがあるため、分かる範囲で書いたほうがよいでしょう。
 # No.1 さんのスクリプトはVistaでは動作しませんでした・・・

・管理者権限はAdministratorsだけでよいのか?
 グループがネストしている(グループの中にグループがある状態)可能性を考慮する必要がありますか?

・最終結果として、どのような条件でもフォルダが削除できさえすればよいのか?エラーが発生しなければよいのか?
 たとえば、On Error Resume Next でフォルダを削除すれば、ユーザーの権限不足によって失敗してもエラー表示が出ません。

この回答への補足

VBScript初心者です。
使用するユーザー:ドメインユーザー
OS:XP Pro
ドメインユーザーでの権限はDomain Userでした。

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

補足日時:2009/03/02 23:14
    • good
    • 0

私も実際に利用したことがないですが、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

こんな感じでどうでしょうか?
識者から見れば稚拙なスクリプトですが、管理者かどうかは判断できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!