はじめに
今回は、Windows PC上にローカルユーザアカウントを作成する方法、作成したユーザアカウントのパスワードを変更する方法、作成したユーザアカウントを削除する方法についての備忘録です。
よく使うケースとしては、「ユーザを作成した結果に対して何か処理を行いたい」「ユーザアカウントの一覧をファイルに出力したい」などですかね。
コマンドプロンプトのnet userをコマンドを利用して操作することも可能ですが、ここではあえてC#での操作方法をまとめたいと思います。
ローカルユーザの作成
利用ライブラリ:System.DirectoryServices;
string username = "TestUser1";
string password = "12345!ABC";
try
{
DirectoryEntry de = new DirectoryEntry($"WinNT://{Environment.MachineName},computer");
DirectoryEntry newUser = de.Children.Add(username, "user");
newUser.Invoke("SetPassword", new object[] { password });
newUser.CommitChanges();
// Groupに追加する
DirectoryEntry grp = de.Children.Find("Guests", "group");
if(grp != null)
{
grp.Invoke("Add", new object[] { newUser.Path.ToString() });
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
ローカルアカウントとして、「TestUser1」を作成し、「Guests」グループに割り当てる処理です。
ローカルユーザのパスワードを変更する
利用ライブラリ:System.DirectoryServices;
string username = "TestUser1";
string password = "12345!ABCDEF";
try
{
DirectoryEntry de = new DirectoryEntry($"WinNT://{Environment.MachineName}/{username}");
de.Invoke("SetPassword", password);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
ローカルユーザ一覧を取得する
利用ライブラリ:System.DirectoryServices;
try
{
DirectoryEntry de = new DirectoryEntry($"WinNT://{Environment.MachineName}");
foreach(DirectoryEntry node in directoryEntry.Children)
{
if(node.SchemaClassName == "User")
{
Console.WriteLine(node.Name);
}
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
実行結果は下記の通りです。
Administrator
DefaultAccount
Guest
TestUser1
ローカルユーザを削除する
利用ライブラリ:System.DirectoryServices;
string username = "TestUser1"
try
{
DirectoryEntry de = new DirectoryEntry($"WinNT://{Environment.MachineName}");
DirectoryEntries users = de.Chidlren;
DirectoryEntry user = users.Find(username);
if(user != null)
{
users.Remove(user);
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
削除後に一覧を取得すると、正常に「TestUser1」が削除されていることが確認できます。
Administrator
DefaultAccount
Guest
最後に
基本的にユーザの追加や削除などといった操作はGUI上で作業することが一般的ですが、作業後に何かの処理を実施したいといった場合は、コードで組みツールとして提供できるようにしておくと、仕事の効率が上がると思われます。
是非、ご活用してみてください。