以下のようにプログラムでユーザーを追加しようとしていますが、保存時にアクセス拒否メッセージが表示されます。私は Windows 7 でローカルに実行しており、コードはコンソール アプリに存在します。
/// <summary>
///
/// </summary>
/// <param name="userName"></param>
/// <param name="password"></param>
/// <param name="description"></param>
public static void CreateUser(string userName, string password, string description)
{
PrincipalContext pc = new PrincipalContext(ContextType.Machine, null);
System.DirectoryServices.AccountManagement.UserPrincipal u = new UserPrincipal(pc);
u.SetPassword(password);
u.Name = userName;
u.Description = description;
u.UserCannotChangePassword = true;
u.PasswordNeverExpires = true;
u.Save();
GroupPrincipal gp = GroupPrincipal.FindByIdentity(pc, "Users");
gp.Members.Add(u);
gp.Save();
}
何か案は?管理者のユーザー名とパスワードを入力しようとしましたが、それでも同じエラーが発生します。
コンソール アプリは次のように実行されます。
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UserName = userName;
startInfo.Password = securePassword;
startInfo.LoadUserProfile = true;
startInfo.UseShellExecute = false;
startInfo.FileName = batchPath;
startInfo.Arguments = operationLogID.ToString();
Process.Start(startInfo);
コードの設定方法の大まかな図を次に示します。
- コンソール アプリのテスト ハーネスがデバッグ モードで実行されます。
- ユーザーを確認し、存在しない場合は、上記のように作成してみます。ここでエラーが発生します。