まずユーザーの追加について
http://support.microsoft.com/kb/306273/ja
で感覚をつかんでください。実際にコードを実行してみると面白いかもしれません。
>[ユーザー アカウント] をクリックします。新しいユーザー アカウントが [ユーザー アカウント] ダイアログ ボックスに表示されます。
ひょっとしたら,この段階に行くまでに再起動が必要だったかもしれません。
次はこれを読んで下さい。
using System;
using System.DirectoryServices;
class Class1
{
static void Main(string[] args)
{
try
{
DirectoryEntry AD = new DirectoryEntry("WinNT://" +
Environment.MachineName + ",computer");
DirectoryEntry NewUser = AD.Children.Add("TestUser2", "user");
NewUser.Invoke("SetPassword", new object[] { "#12345Abc" });
NewUser.Invoke("Put", new object[] { "Description", "Test User from .NET" });
NewUser.CommitChanges();
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) { grp.Invoke("Add", new object[] { NewUser.Path.ToString() }); }
Console.WriteLine("Account Created Successfully");
DirectoryEntry NewUser2 = AD.Children.Find("TestUser2", "user");
NewUser2.Properties["FullName"].Value = "hoge";
NewUser2.CommitChanges();
grp.CommitChanges();
Console.WriteLine("AccountName Changed");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
}
WinXP Pro/IE7 VPC Image + VC# 2008 Beta2において,ユーザーを作成後,
再起動したら「ようこそ」画面にhogeというユーザーが追加されていることに気づくでしょう。
(再起動しなくても「コンピュータの管理」には反映されているし,
二回目コードを実行しようとすると
「ユーザは既にいるよ」といわれてしまう)
テスト用に作ったので,ユーザーをさっくり削除ってことで。
●最初は
NewUser2.Rename("hoge");
とかやってみたのですが,
これで変更されるのは
Nameであるようだ。
なお,上記ソースコードで変更されるのはFull Nameのようで,
「ようこそ」画面や「ユーザーアカウント」に表示される名前は
こっちのようです。
●VPCで実験を行ったのは手元の実機のWindows XP Proで失敗したから。
ひょっとしたら
nLiteでコンポーネントを削除したりしたことが
原因かもしれない。
また,Windows XP Homeでどうなるかはわからない。
●最初実機でコードを書いていたとき,
SharpDevelopのnightly版を使っていたが,
「.NET 2.0向けコンパイルできねーよ。
.NET 3.5向けにコンパイルするよう設定変えやがれ。」と言われた。
上記MSKB306273ではVS2005でのやり方を紹介しているのだが・・・
●FullName以外にどんなキーを指定できるのかはよくわからない。
たまたま適当にやっててうまく行っちゃったので。できれば補足やらお礼で,一覧を見つけてきてくれるとうれしい。
●できたらInvokeで指定できるコマンドの一覧も・・・
#ま、うまくいくにしろ、失敗するにしろ、sys32767さんが書くコードの突破口になれば幸いです。