前へ | 次へ | 目次 | 索引 |
COM Version 1.1 for OpenVMS では,セキュリティ設定を含むように, OpenVMS Registry に情報を再登録しなければなりません。 DCOM$SETUP コマンド・プロシージャを使用して「OpenVMS COM Tools」メニューを表示し,オプション 3 を選択します。
D.2.2 OpenVMS Registry のアプリケーション・セキュリティ設定の変更
OpenVMS V7.2 に添付されていた COM Version 1.0 for OpenVMS では, NTLM セキュリティがサポートされませんでした。その結果, COM Version 1.0 for OpenVMS COM アプリケーションを登録するために使用する OpenVMS アカウントが,アプリケーション登録の一部として作成された OpenVMS Registry キーの所有者になっていました。たとえば, COM Version 1.0 for OpenVMS を使用した場合, SYSTEM アカウントにログインして,SAMPLE1 アプリケーションを登録すると,SAMPLE1 の OpenVMS Registry キーは SYSTEM によって所有されます。
OpenVMS V7.2-1 に添付されている COM Version 1.1 for OpenVMS では, NTLM セキュリティがサポートされるようになりました。 OpenVMS Registry キーへのアクセスを制御するために,ネットワーク・アカウントが使用されるようになりました。このような変更が行われた結果,以前のセキュリティ設定では,特権が与えられていないユーザがアプリケーションのレジストリ・キーにアクセスできなくなることがあります。つまり,既存のアプリケーションを使用している非特権ユーザがアプリケーションの登録や登録の解除を行うことができなくなる可能性があります。
この登録のロックアウトを防止するには,アプリケーションのアクセス権を変更しなければなりません。アクセス権の変更は, Windows NT システムまたは OpenVMS システムから行うことができます。次のいずれかの操作を行います。
COM アプリケーションには複数のレジストリ・キーを関連付けることができます。アプリケーションに関連付けられたすべてのキーを変更しなければなりません。アプリケーションは通常,次のキーを登録します。
HKEY_CLASSES_ROOT\CLSID\{guid}とサブキー
HKEY_CLASSES_ROOT\APPID\{guid}
HKEY_CLASSES_ROOT\APPID\filename
HKEY_CLASSES_ROOT\TYPELIB\{typelib guid}
HKEY_CLASSES_ROOT\INTERFACES\{interface guid(s)}とサブキー
HKEY_CLASSES_ROOT\nameとサブキー
HKEY_CLASSES_ROOT\version independent nameとサブキー
HKEY_CLASSES_ROOTは HKEY_LOCAL_MACHINE\SOFTWARE\Classesのエイリアスです。Regedt32 を使用して Windows NT から OpenVMS Registry に接続していて, HKEY_CLASSES_ROOTキーを変更する場合は, HKEY_LOCAL_MACHINE\SOFTWARE\Classesキーを変更してください。 |
この付録には, COM for OpenVMS と Microsoft COM の実装上の相違点,API の一覧, COM for OpenVMS の本リリースで提供されるインタフェースの一覧を示します。
E.1 COM for OpenVMS と Microsoft COM の相違点
ここでは, COM for OpenVMS と Microsoft の COM の実装上の重要な相違点を示します。
E.1.1 サービス制御マネージャ (SCM)
OpenVMS では,Windows NT のサービス制御マネージャに相当する機能を提供していません。この結果,Server サービス (stop,start,pause, resume など) に依存するアプリケーションは,同様の機能を提供する OpenVMS 機能に依存します (このような機能が提供される場合)。
たとえば,OpenVMS サイト固有のスタートアップ・コマンド・プロシージャとシャットダウン・コマンド・プロシージャを使用して,システムのスタートアップ時にサービスを自動起動し,システムのシャットダウン時にサービスの自動的なシャットダウンを実装できます。
RegisterServiceCtrlHandlerや
ChangeServiceConfigなどのサービス API は, OpenVMS では提供されません。
E.1.2 サーバ・アプリケーションのスタック・サイズ
COM for OpenVMS では,サーバ・アプリケーションの機能はサーバ・スレッドのコンテキストで実行されます。この結果,サーバ機能のスタック空間は 48 KB に制限されます。ローカル変数や構造を格納するために追加空間が必要な場合は,ローカル変数または構造用に動的メモリを割り当てなければなりません。
E.1.3 "char" データ型の使用
OpenVMS と Windows NT は IDL ベースのデータ型 "char" を異なる方法で変換します。
OpenVMS では,このデータ型を MIDL_CHAR として変換します。これは CHAR として定義されており,さらに "char" としても定義されています。OpenVMS コンパイラはデフォルト設定で,これを "unsigned char" に相当するものと解釈します。ほとんどの場合,これらは同じように使用できます。しかし,この 2 つは正確には同じで ありません。C++ では,クラス・メンバ定義でこの 2 つを指定した場合,異なるデータ型として取り扱われます。
Windows NT では,このデータ型は直接 "unsigned char" として変換されます。これは Visual C++ と矛盾します。Visual C++ では, "char" データ型は "signed char" と同じであるものとして取り扱われます。OpenVMS の場合と同様に,"char" はクラス・メンバ定義では "signed char" と同じでありません。
この矛盾を回避するには,次の 2 つの方法があります。
COM for OpenVMS に添付されている MIDL コンパイラは,Microsoft の MIDL コンパイラ V3.00.44 を基礎にしています。
E.1.5 アプリケーション構成のアクセス権を変更するためのDCOM$CNFG の使用
アプリケーションに関連付けられている一部のキーの OpenVMS Registry キー・アクセス権を変更するには,「Application Security」サブメニューのオプション 5 とオプション 6 を使用します。オプション 5 とオプション 6 は次のキーのセキュリティ設定に影響します。
HKEY_CLASSES_ROOT\APPID\{guid}
HKEY_CLASSES_ROOT\CLSID\{guid}とサブキー
Windows NT システムでは, HKEY_CLASSES_ROOT\CLSID\{guid}の下のサブキーのセキュリティ設定は, 既存のセキュリティ設定が HKEY_CLASSES_ROOT\APPID\{guid}の元の設定と一致する場合にだけ変更されます。
OpenVMS システムでは,サブキーの設定は, HKEY_CLASSES_ROOT\APPID\{guid}の元の設定と既存の設定が一致しない場合でも変更されます。
オプション 5 とオプション 6 は,アプリケーションに関連付けられているすべてのキーの設定を変更するわけではありません。たとえば,オプション 5 とオプション 6 は次のキーには影響しません。
HKEY_CLASSES_ROOT\APPID\fi lename
HKEY_CLASSES_ROOT\TYPELIB\{typelib guid}
HKEY_CLASSES_ROOT\INTERFACES\{interface guid(s)}とサブキー
HKEY_CLASSES_ROOT\nameとサブキー
KEY_CLASSES_ROOT\version independent nameとサブキー
これらのキーのセキュリティ設定を変更するには,次の操作を行います。
HKEY_CLASSES_ROOTは HKEY_LOCAL_MACHINE\SOFTWARE\Classesのエイリアスです。Regedt32 を使用して Windows NT から OpenVMS Registry に接続し, HKEY_CLASSES_ROOTキーを変更する場合は, HKEY_LOCAL_MACHINE\SOFTWARE\Classesキーを変更してください。 |
E.2 API
セキュリティ・サポートが必要な API は, COM Version 1.0 for OpenVMS ではサポートされません。
本リリースでサポートされる API は次のとおりです。
BindMoniker BstrFromVector CLSIDFromProgID CLSIDFromString CoAddRefServerProcess CoCopyProxy CoCreateFreeThreadedMarshaler CoCreateGuid CoCreateInstance CoCreateInstanceEx CoDisconnectObject CoDosDateTimeToFileTime CoFileTimeNow CoFileTimeToDosDateTime CoFreeAllLibraries CoFreeLibrary CoFreeUnusedLibraries CoGetCallContext CoGetClassObject CoGetCurrentProcess CoGetInstanceFromFile CoGetInstanceFromIStorage CoGetInterfaceAndReleaseStream CoGetMalloc CoGetMarshalSizeMax CoGetPSClsid CoGetStandardMarshal CoGetTreatAsClass CoImpersonateClient CoInitialize CoInitializeEx CoInitializeSecurity CoIsHandlerConnected CoLoadLibrary CoLockObjectExternal CoMarshalInterface CoQueryAuthenticationServices CoQueryClientBlanket CoQueryProxyBlanket CoRegisterClassObject CoRegisterMallocSpy CoRegisterMessageFilter CoRegisterPSClsid CoReleaseMarshalData CoReleaseServerProcess CoResumeClassObjects CoRevertToSelf CoRevokeClassObject CoRevokeMallocSpy CoSetProxyBlanket CoSuspendClassObjects CoTaskMemAlloc CoTaskMemFree CoTaskMemRealloc CoTreatAsClass CoUninitialize CoUnmarshalInterface CreateAntiMoniker CreateBindCtx CreateClassMoniker CreateDataAdviseHolder CreateDispTypeInfo CreateErrorInfo CreateGenericComposite CreateILockBytesOnHGlobal CreateItemMoniker CreatePointerMoniker CreateStdDispatch CreateStreamOnHGlobal CreateTypeLib DispGetIDsOfNames DispGetParam DispInvoke DllCanUnloadNow DllGetClassObject DllGetClassObject DllMain DllRegisterServer DllUnregisterServer DosDateTimeToVariantTime FreePropVariantArray GetActiveObject GetAltMonthNames GetClassFile GetConvertStg GetErrorInfo GetHGlobalFromILockBytes GetHGlobalFromStream GetRunningObjectTable IIDFromString IsEqualCLSID IsEqualGUID IsEqualIID IsValidIid IsValidInterface IsValidPtrIn IsValidPtrOut LHashValOfName LHashValOfNameSys LoadRegTypeLib LoadTypeLibEx MkParseDisplayName MonikerCommonPrefixWith MonikerRelativePathTo ProgIDFromCLSID PropStgNameToFmtId PropVariantClear PropVariantCopy QueryPathOfRegTypeLib ReadClassStg ReadClassStm ReadFmtUserTypeStg RegisterActiveObject RegisterTypeLib ReleaseStgMedium RevokeActiveObject SafeArrayAccessData SafeArrayAllocData SafeArrayAllocDescriptor SafeArrayCopy SafeArrayCopyData SafeArrayCreate SafeArrayCreateVector SafeArrayDestroy SafeArrayDestroyData SafeArrayDestroyDescriptor SafeArrayGetDim SafeArrayGetElement SafeArrayGetElemsize SafeArrayGetLBound SafeArrayGetUBound SafeArrayLock SafeArrayPtrOfIndex SafeArrayPutElement SafeArrayRedim SafeArrayUnaccessData SafeArrayUnlock SetConvertStg SetErrorInfo StgCreateDocfile StgCreateDocfileOnILockBytes StgCreatePropSetStg StgCreatePropStg StgIsStorageFile StgIsStorageILockBytes StgOpenPropStg StgOpenStorage StgOpenStorageOnILockBytes StgSetTimes StringFromCLSID StringFromGUID2 StringFromIID SysAllocString SysAllocStringByteLen SysAllocStringLen SysFreeString SysReAllocString SysReAllocStringLen SysStringByteLen SysStringLen SystemTimeToVariantTime UnRegisterTypeLib VarDateFromUdate VarNumFromParseNum VarParseNumFromStr VarUdateFromDate VariantChangeType VariantChangeTypeEx VariantClear VariantCopy VariantCopyInd VariantInit VariantTimeToDosDateTime VariantTimeToSystemTime VectorFromBstr WriteClassStg WriteClassStm WriteFmtUserTypeStg |
本リリースでサポートされるインタフェースは,次のとおりです。
IAdviseSink IBindCtx IClassActivator IClassFactory IConnectionPoint IConnectionPointContainer ICreateErrorInfo ICreateTypeInfo ICreateTypeLib IDataAdviseHolder IDataObject IDispatch IEnumCallBack IEnumConnectionPoints IEnumConnections IEnumFORMATETC IEnumMoniker IEnumOLEVerb IEnumSTATDATA IEnumSTATPROPSETSTG IEnumSTATSTG IEnumString IEnumUnknown IEnumVariant IErrorInfo IExternalConnection ILockBytes IMalloc IMallocSpy IMarshal IMessageFilter IMoniker IMultiQI IParseDisplayName IPersist IPersistFile IPersistStorage IPersistStream IPropertySetStorage IPropertyStorage IRootStorage IRunnableObject IRunningObjectTable IStdMarshalInfo IStorage IStream ISupportErrorInfo ITypeComp ITypeInfo ITypeInfo2 ITypeLib ITypeLib2 IUnknown |
前へ | 次へ | 目次 | 索引 |