RunAs

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

レジストリ エントリ

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

解説

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

Note

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

 

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

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

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

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

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

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

Note

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

 

COM サーバーの登録