@egtraイグトランスの頭の中(のかけら)ActiveBasicを中心にプログラミングの話をぼちぼちと。アクセストークン.コメントなし前回(保護モード+αのプロセス上で動作するCOMオブジェクトを作る)では、CreateProcessAsUserを使いました。今回はCoCreateInstanceやCoGetClassObjectで同じように制限のあるプロセスを作る方法です。CoCreateInstanceやCoGetClassObjectでは、指定したクラスがアウトプロセスで実装されていた場合、必要に応じてプロセスが作られます。指定がなければ、新しいプロセスのトークンは、CreateProcessのように呼び出し元のものが使用されます。ユーザーを指定する方法はいくつかありますが、今回は呼び出し元で用意した任意のトークンを使ってプロセスを作ってくれる方法を探し出しました。試した結果、以下のようにすれば良いことが分かりました。ImpersonateLoggedOnUserか何かでトークンを偽装しておく。ImpersonateLoggedOnUserで指定するアクセストークンは、前々回(保護モードよりもう少しだけ制限の強いプロセスを作る)までと同じものです。LUA_TOKENで制限付きのアクセストークンを作るまずはEOAC_STATIC_CLOAKINGでコードを書いてみました。これは、CoInitializeSecurityの実引数に使います。COMサーバー側のコードです。アウトプロセスサーバ製作の利便性のため、C++/CLIからATL使用のC++に変えました。この実装クラスHogeは以前の記事OBJREFモニカーを元にしています。}レジストリへの登録が必要なので、regファイルで作りました。5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DCC853C7-52FD-446E-8BFC-6662D97FD935}\LocalServer32]@="C:\\Test\\hoge.exe"そしてやっと、オブジェクトを作る側のコードです。