WindowsXP+WSH+WMI
を使用したVBScriptでしたら可能です。
多分Windows2000でも動くでしょう。
↓は
C:\Publicフォルダを新規作成し、
共有フォルダPubsとして構成、
共有フォルダのアクセス許可リストに
フルコントロールのEveryoneを追加しています。
他のユーザーの追加方法はいまのところ分かりません。
すでにアクセス許可リストに登録されているユーザーなら変更することが可能なんですが・・・・
Option Explicit
Dim FSO
Dim Services
Dim SecDescClass
Dim SecDesc
Dim Trustee
Dim ACE
Dim Share
Dim InParam
Dim Network
Const FolderName = "C:\Public"
Const ComputerName = "ittochan"
Const ShareName = "Pubs"
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(FolderName) Then
FSO.CreateFolder(FolderName)
End If
Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & "\\" & ComputerName & "\ROOT\CIMV2")
Set SecDescClass = Services.Get("Win32_SecurityDescriptor")
Set SecDesc = SecDescClass.SpawnInstance_()
Set Trustee = Services.Get("Win32_Trustee").SpawnInstance_
Trustee.Domain = ComputerName
Trustee.Name = "EVERYONE"
Trustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
Set ACE = Services.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = 2032127
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 0
ACE.Properties_.Item("Trustee") = Trustee
SecDesc.Properties_.Item("DACL") = Array(ACE)
Set Share = Services.Get("Win32_Share")
Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_()
InParam.Properties_.Item("Access") = SecDesc
InParam.Properties_.Item("Description") = "Public Share"
InParam.Properties_.Item("Name") = ShareName
InParam.Properties_.Item("Path") = FolderName
InParam.Properties_.Item("Type") = 0
Share.ExecMethod_ "Create", InParam
お礼
ittochanさん、こんにちは。 更なる「大作」をありがとうございます。 やはり、WSHは奥が深いことを思い知ら されました。時間がかかりそうですが、 必ずやこのスクリプトを自分のものに してみせます! どうもありがとうございました。