1

次のコードで特定の操作を偽装しています。

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 がこれらの操作を実行する権利を持っているため、理解できません。

何か案は ?

4

0 に答える 0