4.8 ファイル マッピング オブジェクト

4. 新機能や機能変更に伴う互換性問題

この章では、以下のような新機能や機能変更に伴う、互換性問題について紹介します。

SeCreateGlobalPrivilege 権限が必要

セッション 1 以降のセッションから、グローバル名前空間にファイル マッピング オブジェクトを作成するには、SeCreateGlobalPrivilege 権限が必要です。この条件は、Windows Server 2003 からセキュリティ強化のために導入されました。SeCreateGlobalPrivilege 権限を持つユーザーは、OS によって異なります。以下に一覧を示します。

OS の種類 SeCreateGlobalPrivilage 権限を持つユーザー
Windows Server 2003 Administrators、Service
Windows XP SP2 Administrators、Service、Interactive
Windows Vista
Windows Server 2008
Windows 7
Administrators、Service

Windows XP SP2 では、互換性問題を軽減するため、一時的に Interactive ユーザーに対して SeCreateGlobalPrivilage 権限を与えていました。これにより、Windows XP にローカルにログオンしているユーザーが使用しているアプリケーションは、グローバル名前空間にファイル マッピング オブジェクトを作成することができました。しかし、Windows Vista や Windows 7 では Interactive ユーザーに対してこの権限は付与されていません。そのため、このようなタイプのアプリケーションではエラーが発生します。

Windows Vista や Windows 7 では、標準ユーザー (フィルタされている Administrators グループのユーザーを含みます) では、特権が利用できないためエラーになります。

回避方法および対応方法

グローバル オブジェクトを作成するアプリケーションを、権限の昇格を使用して管理者として実行します。ただしこの方法は、アプリケーションのすべてのコードが管理者権限で実行されてしまうため、以下の方法が推奨されます。

  • グローバル オブジェクトを作成する必要があるか検討します。代替の方法があれば変更します。
  • サービスとユーザー アプリケーションがオブジェクトを共有する必要があるなら、サービス側からグローバル オブジェクトを作成します。
  • グローバル オブジェクトをアプリケーション側で作成する必要がある場合にのみ、権限を昇格し管理者権限で実行します。

ページのトップへ