LogonUser、LoadUserProfile、および ImpersonateLoggedOnUser を使用して別のユーザー (Y) の権限を取得する C++ Windows アプリケーション (A) を作成します。A がワークステーション (X) にログオンしているユーザーを使用して開始することを意味します。ユーザーが自分の権限を昇格させたい場合は、ボタンを押して別のユーザーとしてログオンするだけで、ウィンドウからログアウトして再度ログインする必要はありません。
現在の状況は (関数の戻り値によると): LogonUser が機能し、LoadUserProfile が機能し、ImpersonateLoggedOnUser も同様に機能します。
なりすましの後、別のプロセスを開始します。このプロセスは、OCX コントロールを必要とするアプリケーション (B) です。これは失敗し、.oxc ファイルが正しくインストールされていないことがアプリケーションから通知されます。
問題は、マシン (X) にログオンしているユーザーとして B を直接起動すると、動作することです。A を使用して権限を昇格させたいユーザー (Y) として B を直接起動すると、機能します。
(X) としてログインし、エクスプローラーで [実行] (Y) を選択すると、機能します。
Windows の「実行」ダイアログと同じことを行うには、どの手順を実行する必要があるか知っていますか?