RunAs

サービスアプリケーションとして記述せずに、リモートクライアントによってアクティブ化されたときに特定のユーザーアカウントで実行するクラスを構成します。

レジストリ エントリ

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID
   {AppID_GUID}
      RunAs = value

解説

値はユーザー名を指定し、UserNameDomain**\**UserName、または文字列「Interactive User」のいずれかである必要があります。 文字列「nt authority\localservice」(ローカル サービスの場合) および文字列「nt authority\networkservice」(ネットワーク サービスの場合) を指定することもできます。 {AppID_GUID} が既に開始されているか、クラス テーブルにエントリがある COM サーバーを参照している場合は、文字列「nt authority\system」を指定することもできます。 ただし、まだ起動していない COM サーバーで「nt authority\system」を使用することはできません。 「ntauthority\localservice」、「ntauthority\networkservice」、および「ntauthority\system」の既定のパスワードは「」(空の文字列)です。

注意

Windows Vista では、「nt authority\localservice」、「nt authority\networkservice」、および「nt authority\system」RunAs 設定を構成するために空のパスワードは不要になりました。

 

特定のユーザーとして実行するように構成されたクラスは、他の ID では登録されない可能性があるため、この CLSID を使用した CoRegisterClassObject の呼び出しは、実際のアクティブ化要求の代わりに COM によってプロセスが起動されない限り、失敗します。

ユーザー名は、クラスの AppID キーの下にある RunAs の名前付き値から取得されます。 ユーザー名が「対話型ユーザー」の場合、サーバーは現在ログオンしているユーザーの ID で実行され、対話型デスクトップに接続されます。

それ以外の場合、パスワードは、コンピューターおよびシステムの管理者のみが使用できるレジストリの一部から取得されます。 次に、ユーザー名とパスワードを使用して、サーバーが実行されるログオン セッションを作成します。 この方法で起動すると、ユーザーは独自のデスクトップおよびウィンドウ ステーションで実行され、ウィンドウ ハンドル、クリップボード、またはその他の UI 要素を対話型ユーザーまたは他のユーザー アカウントで実行している他のユーザーと共有しません。

RunAs クラスのパスワードを確立するには、システム ディレクトリにインストールされている DCOMCNFG 管理ツールを使用する必要があります。

DCOM サーバーで使用される RunAs ID の場合、値に指定されたユーザー アカウントには、バッチ ジョブとしてログオンする権限が必要です。 この権限は、ローカル セキュリティ ポリシー管理ツールを使用して追加できます。 [ローカル ポリシー] に移動し、[ユーザー権利の割り当て] を開きます。 [バッチ ジョブとしてログオン] を選択し、ユーザー アカウントを追加します。

RunAs 値は、サービスとして実行するように構成されたサーバーには使用されません。 LocalSystem 以外の ID で実行する必要がある COM サービスは、サービス コントロール パネル アプレットまたはサービス コントローラー機能を使用して、適切なユーザー名とパスワードを設定する必要があります。 (これらの関数の詳細については、「サービス」を参照してください。

注意

Microsoft Windows Server 2003 の時点では、AppID クラスは HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID から明示的に読み取られます。これは、ほとんどのレジストリ キーとは異なり、HKEY_CLASSES_ROOT\AppID と互換性がありません。

 

COM サーバーの登録