0

ADのパスワードを更新するために使用する小さなライブラリ(DLL)をセットアップしました。このアプリケーションをテストアプリケーションでテストすると、まったく問題なく動作します。ただし、別のアプリケーションでライブラリの使用を開始するとすぐに、パスワードを変更しようとするとAccessDeniedエラーが発生します。

ユーザーが存在するかどうかを確認するための単純なルックアップを実行する関数など、別の関数を呼び出すと、すべてが正常に機能します。

    PrincipalContext ctx = new PrincipalContext(ContextType.Domain, TargetDomainServer, TargetDomainContainer, TargetDomainUser, TargetDomainPassword);
    UserPrincipalExt user = UserPrincipalExt.FindByIdentity(ctx, userLogonName);
    user.SetPassword(userPassword);

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

1

テスト アプリケーションが管理者として実行されている可能性があります。IDE から実行されているか、requestedExecutionLevel.

Windows Vista および 7 では、通常のユーザーとしてログインしているときにアプリケーションを実行しても、プロセスが管理者として実行されていないわけではありません。でマークされた実行可能ファイルの自動昇格がありますrequestedExecutionLevel。テスト アプリケーションを右クリックして選択し、管理者として実行してみてください。

意図的な実行可能マークのない自動昇格もあります。Windows には、既知のインストーラーの内部リストがあります。バージョン情報とバイナリ署名によってそれらの一部を実際に認識し、管理者として実行しようとするため、インストールは実際に成功します。IIRC、別の識別方法はファイル名です。指定された実行可能ファイルsetup.exeも昇格されます (requestedExecutionLevelオーバーライドしない限り)。

于 2012-06-07T22:05:12.093 に答える