公園の池も雨の中

陶磁器コレクション、千夜一夜物語、映画の話等

VBScriptでローカル ユーザアカウントを作成する。

2008-02-21 16:05:08 | VBScript
どうやら私の仕事の進捗は鼻歌の歌い方でわかるようです。

何故かMicrosoft TechNetにはActive Directory のユーザーアカウントの作成方法
しか掲載されていません。

ユーザーの作成はこのサイトに出ていましたが・・・
http://www.whitire.com/vbs/tips0195.html

この方法でユーザーは追加できるのですが、
「ようこそ画面」にもコントロールパネルのユーザーアカウントにも表示されません。
もう一つの注意点として、ログインしないとユーザーフォルダ(Vistaの場合 c:/user/ユーザー名)
は作成されないので、フォルダを作成するコードを追加する必要があります。

「ようこそ画面」とコントロールパネルに表示する方法を探してみたらありました。

http://forums.techarena.in/showthread.php?t=435423

サンプルはXPですがVistaでも動きます。
但しVistaだとUACが有効の場合、ガードされて当然な内容なので、実行エラーが発生します。
管理者として実行する必要があります。
コマンドプロンプトを管理者として起動してスクリプトを実行するのが普通ですが
マンマシンを考えるとスクリプトを起動するEXEを作成して、EXEの名称に"Setup"を含む名前を付けるか、
manifestを書く、というのが良いかと。

そこで、ウィンドウにファイルをドラッグドロップすると該当ファイルを起動するというプログラムをC#で
作成したのですが…
管理者権限を付加して起動するとドラッグドロップができない。MS、なにゆえ・・・


最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
ソース (minak83)
2008-11-07 14:56:18
リンク切れになっていたのでソースを載せておきます。

Option Explicit
Dim UserName,PassWord,strComputer
Dim objWshNetwork
Dim colAccounts,objUser
Dim objGroup

UserName="boo"
PassWord="test"

Set objWshNetwork = CreateObject("WScript.Network")
strComputer = objWshNetwork.ComputerName

Set colAccounts = GetObject("WinNT://" & strComputer & "")

colAccounts.Filter = Array("user")
For Each objUser In colAccounts
If UCASE(objUser.Name)=UCASE(UserName) then
MsgBox "この名前は既に使用中です"
'colAccounts.Delete "user",UserName '既存のユーザーを削除したいときはこの行を実行
CloseProc -1
End if
Next

Set objUser = colAccounts.Create("user", UserName)

objUser.SetPassword PassWord
objUser.SetInfo
If Err.Number <> 0 Then
MsgBox "書き込めません"
CloseProc -2
End if

Set objGroup = GetObject("WinNT://" & strComputer & "/Users,group")'通常のユーザとして作成

'管理者権限付 Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators,group")

objGroup.Add ObjUser.ADsPath

CloseProc 0

sub CloseProc(sts)
Set colAccounts=Nothing
Set objWshNetwork=Nothing
Set objUser =Nothing
Set objGroup=Nothing
WScript.Quit(sts)
End Sub
返信する