重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

C#を使用してWindowsのユーザーアカウントの名前を変更したいのですが、なかなか方法がみつかりません。

どなたかご教示願います。

環境:WinXP,Visual Studio 2005

A 回答 (1件)

まずユーザーの追加について


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さんが書くコードの突破口になれば幸いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!