• ベストアンサー

WSH(VBS)でNTFSのアクセス権の付け方を教えてください

MS-DOSのCACLSにあたるWSH(VBS)の使い方が 分かりません。教えて頂けないでしょうか? WINDOWSのNTFSに存在するファイルに対し スクリプトにてアクセス権付与をしたいと 考えています。 何卒よろしくお願い致します。

  • milki
  • お礼率59% (77/129)

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

  • ベストアンサー
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.1

以前、私が作成したVBSです。 参考になれば。 c:\scripts\test.txt のアクセス許可を変更します。 Option Explicit Dim instance Dim strMoniker Dim objDescriptor Dim retval Dim DACL Dim controlFlags Dim accessmask Dim Group Dim Owner Dim SACL Dim number_of_trustees Dim trustee_Domain Dim trustee_Name Dim trustee_Sidstring Dim i Dim strACL '' アクセス権のマスク Const FULLACCESS = 2032127 '' フルアクセス(All) Const READ = 1179817 '' 読み取り(RX) Const UPDATE = 1245631 '' 変更(RWXD) Const R = 1179785 '' 特殊なアクセス権(R) Const W = 1179926 '' 特殊なアクセス権(W) Const X = 1179808 '' 特殊なアクセス権(X) Const D = 65536 '' 特殊なアクセス権(D) Const P = 262144 '' 特殊なアクセス権(P) Const O = 524288 '' 特殊なアクセス権(O) Const ImpLevel = "{impersonationLevel=impersonate}" Const namespace = "!root\cimv2:" Const objectpath = _ "Win32_LogicalFileSecuritySetting=""c:\\scripts\\test.txt""" strMoniker = "winmgmts:" & ImpLevel & namespace & objectpath Set instance = GetObject(strMoniker) If instance Is Nothing Then MsgBox ("インスタンスを取得出来ません。") WSCript.Quit End If retval = instance.getsecuritydescriptor(objDescriptor) Set DACL = objDescriptor.Properties_.Item("dacl") ' get dacl controlFlags = objDescriptor.Properties_.Item("controlflags") Set Group = objDescriptor.Properties_.Item("Group") Set Owner = objDescriptor.Properties_.Item("Owner") Set SACL = objDescriptor.Properties_.Item("Sacl") number_of_trustees = UBound(DACL.Value) WScript.Echo "ドメイン名\ユーザ名:SID\アクセス権\アクセスマスク" For i = 0 To number_of_trustees Set trustee_Domain = DACL.Value(i).Properties_.Item _ ("trustee").Value.Properties_.Item("Domain") Set trustee_Name = DACL.Value(i).Properties_.Item _ ("trustee").Value.Properties_.Item("Name") Set trustee_Sidstring = DACL.Value(i).Properties_.Item _ ("trustee").Value.Properties_.Item("Sidstring") accessmask = DACL.Value(i).Properties_.Item _ ("AccessMask").Value ' Save the accessmask Select Case accessmask Case FULLACCESS strACL = "フルコントロール(All)" Case READ strACL = "読み取り(RX)" Case UPDATE strACL = "変更(RWXD)" Case Else strACL = accessmask End Select WScript.Echo trustee_domain & "\" & trustee_name & ":" & trustee_Sidstring & ":" & strACL & ":" & accessmask If trustee_name = "Administrators" Then 'アクセス許可の設定 'Administratorsを「読み取り」にする objDescriptor.Properties_.Item("dacl").Value(i).Properties_.Item _ ("AccessMask").Value = R End If Next retval = instance.setsecuritydescriptor(objDescriptor) If retval = 0 Then MsgBox "成功しました。" Else MsgBox "セキュリティ設定を変更できませんでした。" End If Set instance = Nothing WSCript.Quit

milki
質問者

お礼

試してみます。ありがとうございました。

関連するQ&A

  • WSHやVBSについて

    WSHやVBSを用いて以下のような動きをしてくれるスクリプトって出来ますか? (1)私のデスクトップからスクリプトファイルをクリック (2)ファイルがそのままFTPサーバーへ接続 (3)UserとPasswordを自動的に認証 (4)Aという特定のディレクトリへ移動して (5)そのディレクトリ内にある、全部のTXTファイルを対象にして、書き込まれている半角?を全角スペースへ置き換える

  • WindowsのWSH、VBSの本・参考サイト探してます。

    WSH または VBSなどを使用して スクリプトファイルをつくりたいです。 たとえば、バッチファイルを実行して、コントロールパネルを開き値を変更したりなど… 言語がまったくの初心者なのですが、なにか参考になる本または、参考になるサイトなどあればご教授ください。

  • wsh(vbs)のデバッグについて

    MSのScriptDebuggerをインストールした後に コマンドプロンプトからオプションの //D を付けてスクリプトをキックしたのですが、普通にスクリプトが実行されるだけでデバッガが起動してくれません。どの様にしたらデバッガが起動するのでしょうか。MSのScriptDebuggerのページ等を参照しても原因が分からず困っています。 よろしくお願いいたします。 実行したコマンド:cscript ×××.vbs //D です。 WSHのバージョンは5.6、インストールしたデバッガのバージョンは1.0.7295のXP/2000用です。

  • フォルダのアクセス権 一括変換するWSH

    こんにちは、 多数のフォルダに対してアクセス権を一気に変えたいと考えています。CaclsというDOSコマンドでできるということはわかったのですが、WSHで書くことはできるのでしょうか? 何かヒントなどありましたら教えてください。 よろしくお願いします。 PC:WindowsXP

  • Q>NTFSアクセス権のかけかたを教えて

    WindowsXP(Professional SP1)でフォルダにNTFSアクセス権をかけるにはどうしたらいいのでしょうか? Windows2000だとフォルダのプロパティでセキュリティのタグが出てくるのですが、XPだと 全般、共有、カスタマイズ のタグだけでセキュリティはありません。(もちろんNTFSでフォーマットしています)なんでセキュリティのタグが無いのでしょうか? それとも無いのが普通で別のところでアクセス権をかけるのですか? しかたないので、コマンドプロンプトからCACLSコマンドを打ってセキュリティをかけているのですがとても面倒です。 知っているかた、教えてください。

  • LuaとWSHについて

    初心者です。 LuaとWSHを使ってスクリプトを作成しています。 Luaの記述でos.executeを使いWSH(.vbs)を実行するのですが、 WSHで得た変数をLua側に渡すことはできますでしょうか? 具体的には(一部抜粋)、 ---Lua側--- os.execute(インプット.vbs) inputxxx = input ---WSH側(インプット.vbs)--- Input = InputBox("数値を入力してください") という記述で、 Luaを実行し、WSH側のインプットボックスで入力した値(input)を Lua側の変数inpuxxxに入れたいです。 どなたかお助け頂けると有難いです。

  • WSH

    OSを再インストール(WIN98SE)したら、これまで使っていたWSHの*.vbsの一部のファイルがエラーになりました。 最新バージョンはどのようにして手に入れたらよかったでしょうか。

  • VBScript(WSH)でのランダムアクセス

    VBScript(WSH)を用いてファイル内を検索し、特定文字列の次の行に文字列を追加するスクリプトを作成しています。 シーケンシャル方式を用いた方法では作ることが出来ました。 ただ、それだと一度全ての行をを読み込み特定位置に追加した後、もう一度全て上書きしているため処理が多くなってしまいます。 そこでランダムアクセスを用いて任意の位置に文字列を挿入できないかと考えました。 VBの Open ファイルパス For Random As ~ も試しましたがうまく動きませんでした。(構文として認識していない?) VBSでのランダムアクセスは不可能なのでしょうか? 良い方法がございましたらご教授ください。 よろしくお願いします。

  • 起動時に勝手にWSHが起動する

    つい先日ウイルスに感染し、ノートンパワーイレイサーで感染したであろうファイルをすべて消去したところ、スクリプトファイルを消去したは良いものの、起動時にWSHがvbsを実行する設定が残ってしまったらしく、起動するたびも画像のような消去したスクリプトファイルを実行しようとするダイアログが出てきます。 完璧に検索したわけではありませんが、いくら検索しても解決法が見当たらなかったため質問させてもらいました。 どなたか解決法をご存知の方、教えていただけると幸いです。 エラーコード Windows Script Host スクリプトファイル"C:\Users\Public\Libraries\Checks.vbs"が見つかりません。

  • VBSが起動しない

    windows7 64bitのpcです。 簡単ないろんな計算をしたいと思ってvbsを勉強中ですが、 ただ単にメモ帳で msgbox "こんにちは"と打ち込んで 拡張子を「ファイル」・vbsに変えてアイコンもスクリプトのアイコン表示になりました。 ファイルのプロパティでもスクリプトファイルと認識されています。 しかし、「ファイル」・vbsをダブルクリックで実行すると”c:「ファイル」に拡張子がありません”とダイアログ表示されます。 スクリプトホストに「ファイル」・vbsをドラグしても同じ結果でした。 どなたかこの状態の解決をご存知の方よろしくご指導のほどお願いいたします。

専門家に質問してみよう