LogonUser、LoadUserProfile、ImpersonateLoggedOnUserを使用して別のユーザー(Y)の権限を取得するC++ Windowsアプリケーション(A)を作成します。 意味Aは、ワークステーション(X)にログオンしているユーザーの使用を開始します。ユーザーが彼の権利を昇格させたい場合、ウィンドウからログアウトしてログインすることなく、ボタンを押して別のユーザーとしてログオンすることができます。ImpersonateLoggedOnUserとocxを使用する新しいプロセスの開始に失敗する
状況は次のとおりです(関数の戻り値に従って)。 LogonUserが動作し、LoadUserProfileが動作し、ImpersonateLoggedOnUserも同様に動作します。
偽装後、別のプロセスが開始されます。このプロセスは、OCXコントロールが必要なアプリケーション(B)です。 これは失敗し、アプリケーションは.oxcファイルが正しくインストールされていないことを通知します。
私は、マシン(X)にログオンしているユーザーとしてBを直接起動すると動作します。 Aを使用して自分の権利を昇格させたいユーザ(Y)としてBを直接開始すると、それは機能します。
(X)としてログインしていて、エクスプローラで[実行](Y)を選択した場合、動作します。
「ウィンドウズから実行」ダイアログと同じようにするために必要な手順を知っていますか?
環境がCOM登録は%COMMONPROGRAMFILES%\ SomeDirHere \ MyLib.OCXインプロセスのためのサーバーの場所を使用している場合は特にvarsのことでした。生成されたプロセスの環境をダンプします。 – wqw