現在WindowsXP以降のOSでの変更はできているのですが
Windows2000ではJoinDomainOrWorkgroupなどのメソッドをサポートしていないため手詰まりの状態です。
以下のユーザー名変更のようなADSIを使用したコードでできないか試行錯誤しておりますが
他の方法でもよろしいですので、ご存知の方ご教授頂けないでしょうか?
' ユーザー名(Windows2000)
Dim User ' As ActiveDs.IADs
Dim Container ' As ActiveDs.IADsContainer
Set Container = GetObject("WinNT://.,Computer")
Set User = GetObject("WinNT://./変更前,User")
Call Container.MoveHere(User.ADsPath, "変更後")
参考までにWindowsXP以降のコードも添付致します。
Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
' ワークグループ
Set workgroupEnum = Service.ExecQuery("Select * From Win32_ComputerSystem WHERE Name=""変更前""")
For Each workgroup In workgroupEnum
ret = workgroup.JoinDomainOrWorkgroup("変更後", Nothing, Nothing, Nothing, Nothing)
Next
' ユーザー名
Set userEnum = Service.ExecQuery("Select * From Win32_UserAccount WHERE Name=""変更前""")
For Each user In userEnum
ret = user.Rename("変更後")
Next
アプローチを変えてみてはいかがでしょうか。
フリーソフトでバッチ処理に対応したものがあります。
http://www.valsoft.jp/delphi/vipconfigdll.html
コメント(0件)