サードパーティのアウトプロセス COM サーバーと、それをアクティブ化しようとしているクライアント プログラムがあります。C# と C++ の 2 つを作成しました。VS2010 からクライアント プログラム (いずれか) を Ctrl-F5 (昇格モードで開始) で開始すると、クライアントは COM サーバーをアクティブ化できません。「クラスが登録されていません」というエラーが表示されます。コマンド ライン/Windows エクスプローラーからクライアントを起動すると、クライアントは正常にアクティブな COM サーバーを実行します。
したがって、ある場合には動作し(COMサーバーをアクティブにする)、別の場合には動作しない(COMサーバーをアクティブにしない)exeモジュールが1つあります。後者のケースは、モジュールが VS2010 から実行された場合です (デバッグではなく、Ctrl-F5 だけで)。
これは、vs2010で起動したモジュールがその権限を継承するため、権限に問題があると思われます。
processprivileges.codeplex.com の助けを借りて、私は 2 つの特権セットを取得します: それが機能しない場合: IncreaseQuota => 無効な
セキュリティ => 無効
な TakeOwnership => 無効
な LoadDriver => 無効な
SystemProfile => 無効な
SystemTime => 無効
な ProfileSingleProcess = > 無効な
IncreaseBasePriority => 無効
な CreatePageFile => 無効な
バックアップ => 無効な
復元 => 無効な
シャットダウン => 無効な
デバッグ => 有効
な SystemEnvironment => 無効
な ChangeNotify => 有効
な RemoteShutdown =>無効
Undock => 無効
ManageVolume => 無効
Impersonate => 有効
CreateGlobal => 有効
IncreaseWorkingSet => 無効
TimeZone => 無効
CreateSymbolicLink => 無効
これが機能する場合: シャットダウン => 無効
ChangeNotify => 有効
Undock => 無効
IncreaseWorkingSet => 無効
TimeZone => 無効
COM アクティベーションに関連する疑わしい特権は見当たりません。しかし、それ以外の理由は見当たりません。
あるケースではアウトプロセス COM サーバーが正常にアクティブ化され、別のケースではアクティブ化されないのはなぜですか?