VBScriptによるユーザーアカウントの管理

VBScript

VBScriptはWindows環境での管理タスクの自動化に非常に役立つスクリプト言語です。

本記事では、VBScriptを使用してユーザーアカウントの作成、削除、パスワードの変更などを行う方法を詳細に説明します。

これらの操作をマスターすることで、システム管理者としての作業効率が大幅に向上します。

前提条件

以下のスクリプトは管理者権限で実行する必要があります。

また、Windowsの「Net User」コマンドを使用しますので、事前にコマンドプロンプトで動作を確認しておくとよいでしょう。

If Not WScript.Arguments.Named.Exists("elevated") Then
    ' UACプロンプトを表示してスクリプトを再実行
    CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
    WScript.Quit
End If

' 管理者権限で実行されている場合の処理
WScript.Echo "スクリプトは管理者権限で実行されています。"
' ここに管理者権限が必要な操作を記述します。

ユーザーアカウントの作成

新しいユーザーアカウントを作成するには、以下のスクリプトを使用します。

Net Userコマンドを呼び出して、指定したユーザー名とパスワードでアカウントを作成します。

Dim objShell
Set objShell = CreateObject("WScript.Shell")

Dim userName, password
userName = "newuser"
password = "password123"

objShell.Run "cmd /c net user " & userName & " " & password & " /add", 0, True
WScript.Echo "User " & userName & " has been created."

ユーザーアカウントの削除

ユーザーアカウントを削除するには、以下のスクリプトを使用します。

Net Userコマンドの/deleteオプションを使用して、指定したユーザー名のアカウントを削除します。

Dim objShell
Set objShell = CreateObject("WScript.Shell")

Dim userName
userName = "newuser"

objShell.Run "cmd /c net user " & userName & " /delete", 0, True
WScript.Echo "User " & userName & " has been deleted."

ユーザーパスワードの変更

既存のユーザーアカウントのパスワードを変更するには、以下のスクリプトを使用します。

Net Userコマンドを使用して、新しいパスワードを設定します。

Dim objShell
Set objShell = CreateObject("WScript.Shell")

Dim userName, newPassword
userName = "existinguser"
newPassword = "newpassword123"

objShell.Run "cmd /c net user " & userName & " " & newPassword, 0, True
WScript.Echo "Password for user " & userName & " has been changed."

ユーザーアカウントの属性変更

ユーザーアカウントの属性(例えば、フルネームや説明)を変更するには、以下のスクリプトを使用します。

Dim objShell
Set objShell = CreateObject("WScript.Shell")

Dim userName, fullName, description
userName = "existinguser"
fullName = "John Doe"
description = "Regular user account"

objShell.Run "cmd /c net user " & userName & " /fullname:""" & fullName & """ /comment:""" & description & """", 0, True
WScript.Echo "Attributes for user " & userName & " have been updated."

ユーザーアカウントの有効化・無効化

ユーザーアカウントを有効化または無効化するには、Net Userコマンドの/activeオプションを使用します。

Dim objShell
Set objShell = CreateObject("WScript.Shell")

Dim userName
userName = "existinguser"

' ユーザーアカウントの無効化
objShell.Run "cmd /c net user " & userName & " /active:no", 0, True
WScript.Echo "User " & userName & " has been disabled."

' ユーザーアカウントの有効化
objShell.Run "cmd /c net user " & userName & " /active:yes", 0, True
WScript.Echo "User " & userName & " has been enabled."

ユーザーアカウント情報の取得

特定のユーザーアカウントに関する情報を取得するには、以下のスクリプトを使用します。

Net Userコマンドを実行し、その出力をキャプチャします。

Dim objShell, objExec
Set objShell = CreateObject("WScript.Shell")

Dim userName, userInfo
userName = "existinguser"

Set objExec = objShell.Exec("cmd /c net user " & userName)
userInfo = objExec.StdOut.ReadAll

WScript.Echo userInfo

UACの基本概念

UAC(ユーザーアカウント制御)は、Windowsでのセキュリティ機能の一つであり、ユーザーが管理者権限を必要とする操作を行う際に確認を促します。

これにより、悪意のあるプログラムがシステムに変更を加えることを防ぎます。

VBScriptを使用してUACを扱う方法を詳細に説明します。

UACは、Windows Vista以降のバージョンで導入された機能で、標準ユーザーアカウントと管理者アカウントの間で明確な区分を設けています。

管理者アカウントでも、管理者権限が必要な操作を行う際にはUACプロンプトが表示されます。

UACのレベルを変更する

UACのレベルをプログラムから変更することは推奨されませんが、管理タスクの一環として必要な場合があります。

以下のスクリプトは、レジストリを操作してUACのレベルを変更する方法を示します。

注意が必要なのは、この操作はシステムのセキュリティ設定に直接影響を与えるため、慎重に行う必要があります。

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
strValueName = "ConsentPromptBehaviorAdmin"
dwValue = 0 ' 0 = UACを無効化, 5 = 通常のUACプロンプト

objRegistry.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
WScript.Echo "UACのレベルが変更されました。再起動してください。"

UACの状態を確認する

UACの状態を確認するには、レジストリの特定のキーをチェックします。

以下のスクリプトは、UACが有効かどうかを確認します。

Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
strValueName = "EnableLUA"
objRegistry.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue

If dwValue = 1 Then
    WScript.Echo "UACは有効です。"
Else
    WScript.Echo "UACは無効です。"
End If

まとめ

VBScriptを使用してユーザーアカウントを管理することで、日常の管理タスクを効率的に自動化できます。

アカウントの作成、削除、パスワード変更、属性変更、アカウントの有効化・無効化、そしてアカウント情報の取得など、基本的な操作をマスターすることで、Windows環境での管理業務を大幅に簡素化できます。

これらのスクリプトを応用し、さらに高度な管理タスクも実現していってください。

また、UACはWindows環境でのセキュリティを強化するための重要な機能です。

VBScriptを使用してUACプロンプトを表示し、管理者権限でスクリプトを実行する方法をマスターすることで、システム管理タスクを効率的に行うことができます。

UACのレベル変更や状態確認といった操作も可能ですが、これらは慎重に扱う必要があります。

これらのテクニックを活用して、安全かつ効果的な管理業務を実現してください。