OpenVMS Alpha
オペレーティング・システム
コネクティビティ開発者ガイド


前へ 次へ 目次 索引


D.2.1 COM Version 1.1 for OpenVMS では OpenVMS Registry に情報を再登録しなければならない

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 システムから行うことができます。次のいずれかの操作を行います。

D.2.2.1 COM アプリケーションのレジストリ・キー

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_ROOTHKEY_LOCAL_MACHINE\SOFTWARE\Classesのエイリアスです。Regedt32 を使用して Windows NT から OpenVMS Registry に接続していて, HKEY_CLASSES_ROOTキーを変更する場合は, HKEY_LOCAL_MACHINE\SOFTWARE\Classesキーを変更してください。


付録 E
相違点,API,インタフェースの一覧

この付録には, 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 サイト固有のスタートアップ・コマンド・プロシージャとシャットダウン・コマンド・プロシージャを使用して,システムのスタートアップ時にサービスを自動起動し,システムのシャットダウン時にサービスの自動的なシャットダウンを実装できます。 RegisterServiceCtrlHandlerChangeServiceConfigなどのサービス 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 つの方法があります。

E.1.4 MIDL コンパイラのバージョン

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とサブキー

これらのキーのセキュリティ設定を変更するには,次の操作を行います。

  1. Windows NT システムから RegEdt32 を起動します。

  2. 「レジストリ」メニューの 「コンピュータの選択」を選択し, OpenVMS Registry が格納されている OpenVMS システムに接続します。

  3. 変更するアプリケーションに関連付けられているキーを選択します。

  4. 「セキュリティ」メニューの 「アクセス権...」を選択し,ユーザにフル・コントロール・アクセス権を与えます。

  5. アプリケーションに関連付けられている各レジストリ・キーに対して、最後の 2 つの手順を繰り返します (この節で前に説明したキーの一覧を参照)。

注意

HKEY_CLASSES_ROOTHKEY_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 

E.3 インタフェース

本リリースでサポートされるインタフェースは,次のとおりです。


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 


前へ 次へ 目次 索引