次のコードで特定の操作を偽装しています。
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(Environment.UserName);
ImpersonateUser iu = new ImpersonateUser();
if (iu.impersonateValidUser("user1", "domaine1", "user1password"))
{
MessageBox.Show(Environment.UserName);
RegistryKey regKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "PC1", RegistryView.Registry64).OpenSubKey("SOFTWARE\\ODBC\\ODBC.INI\\NetworkTP_DB");
MessageBox.Show(regKey.GetValue("Description").ToString());
iu.undoImpersonation();
}
}
User1 としてログインすると、これらの操作は完全に機能します。user2 としてログインすると、UnauthorizedException が発生します。これは、user1 がこれらの操作を実行する権利を持っているため、理解できません。
何か案は ?