Registry 構造体

Registry 構造体は、Windows のレジストリ キーにアクセスするためのメソッドを提供します。

これらのメソッドは、3ds Max 2008 以降で使用可能です。

従来、Avguard 機能拡張として提供されていた機能です。

警告:

Windows のレジストリを編集すると、オペレーティング システムの動作が不安定になる可能性があります。Windows レジストリについて熟知している専門家以外はレジストリを操作しないでください。

   

registry.closeKey <HKey>   

オープンされている HKey をクローズします。成功した場合は true、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

HKey は、クローズした後では無効になっているので、使用してはなりません。

HKey は必要以上に長い間オープンしたままにしてはなりません。

closeKey メソッドは、戻される前に必ずしもレジストリに情報を書き込まなければならないわけではありません。キャッシュがハード ディスクにフラッシュされるまでに数秒間かかる場合があります。

アプリケーションでレジストリ情報をハード ディスクに明示的に書き込む必要がある場合は、 registry.flushKey() を使用できます。ただし、このメソッドはシステム リソースを大量に使用するので、必要なときにだけ呼び出す必要があります。

   

registry.flushKey <HKey> 

オープンされている HKey のすべてのアトリビュートをレジストリに書き込みます。成功した場合は true、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

registry.flushKey() メソッドを呼び出してキーを変更する必要はありません。レジストリの変更は、レジストリにより、レイジー フラッシュ機構を使用してディスクにフラッシュされます。レイジー フラッシュは、システムによって指定された時間間隔が経過した後に、自動的および規則的に実行されます。レジストリの変更は、システム シャットダウン時にもディスクにフラッシュされます。 registry.closeKey() とは異なり、 registry.flushKey() はすべてのデータがレジストリに書き込まれたときにのみ返ります。 registry.flushKey() もまた、一部またはすべての他のキーを書き込む場合があります。

この関数を過度に呼び出しすぎると、アプリケーションのパフォーマンスにマイナスの効果を与える場合があります。アプリケーションから registry.flushKey() を呼び出すのは、レジストリの変更をディスク上に保存することがどうしても不可欠な場合だけにしましょう。

一般に、 registry.flushKey() を使用するようなことはほとんどありません。

   

registry.deleteSubKey <HKey> <string subKeyName> recurse:<bool> 

オープンされている HKey の指定されたサブキーを削除します。そのキーのすべての値を含むキー全体が削除されます。成功した場合は true、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

recurse が false に設定されている場合や指定されていない場合は、サブキーが含まれているサブキーを削除することはできません。recurse が true の場合は、サブキーおよびそのすべての子孫が削除されます。

   

registry.deleteKey <HKey> recurse:<bool> 

HKey を削除します。指定された HKey の親 HKey がオープンされている必要があります。そのキーのすべての値を含むキー全体が削除されます。成功した場合は true、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

recurse が false に設定されている場合や指定されていない場合は、サブキーが含まれている HKey を削除することはできません。recurse が true の場合は、HKey およびそのすべての子孫が削除されます。

   

registry.createKey <HKey> <string subKeyName> accessRights:<{#readOnly|#writeOnly|#all| <int>}> newKeyCreated:<&bool>Key:<&HKey>volatile:<bool> 

指定されたオープンされている HKey のサブキーとして新しい HKey を作成します。サブキーがすでに存在する場合は、関数によってサブキーがオープンされます。

成功した場合は true、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

accessRights の「int」の値に関する詳細は、「HKey の値」を参照してください。既定の accessRights は #all です。

新しいキーが作成されると、 newKeyCreated: キーワード変数に true の値が書き込まれます。

新しいキーが作成されるか、既存のキーがオープンされると、 Key: キーワード変数に HKey の値が書き込まれます。

volatile: false に設定されているか、指定されていない場合は、キー情報はレジストリ ファイルに書き込まれます。 true の場合は、キー情報はメモリにのみ保持され、対応するレジストリ群がアンロードされた場合には保存されません。

registry.createKey HKEY_CLASSES_ROOT ".123" accessRights:#all newKeyCreated:&newKeyCreated key:&key1

   

registry.openKey <HKey> <string subKeyName> accessRights:<{#readOnly |#writeOnly|#all| <int>}> key:<&HKey> 

既存の HKey をオープンします。

成功した場合は true 、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

registry.openKey は、指定されたキーがレジストリ内に存在しない場合は、このキーを作成しません。

accessRights の <int> の値に関する詳細は、「HKey の値」を参照してください。既定の accessRights は #readOnly です。

HKey が正常にオープンされると、 Key キーワード変数に HKey の値が書き込まれます。

registry.openKey HKEY_CLASSES_ROOT ".123" accessRights:#all key:&key1

   

registry.deleteValue <HKey> <string valueName> 

オープンされている HKey の指定された値を削除します。

成功した場合は true 、エラーが発生した場合は false を返します。

エラー メッセージを取得するには、 registry.getLastError() を使用します。

valueName が空の文字列 ("") である場合は、HKey の既定値が削除されます。

   

registry.setValue <HKey> <string valueName> <name valueType> <value data> 

オープンされている HKey の指定された値のデータ タイプと値を設定します。

成功した場合は true 、エラーが発生した場合は false を返します。

エラー メッセージを取得するには、 registry.getLastError() を使用します。

valueName が空の文字列 ("") である場合は、HKey の既定値が設定されます。

setValue の有効な valueType の値、および対応する MXS データ タイプは次のとおりです。

#REG_DWORD - 整数

#REG_SZ - 文字列

#REG_EXPAND_SZ - 環境変数に対する拡張されていない参照を含む文字列

#REG_MULTI_SZ - 文字列配列

registry.setvalue key1 "" #multiSZ #("zz","ww")

   

registry.queryValue <HKey> <string valueName> type:<&name> value:<&value> expand:<bool> 

オープンされている HKey のデータ タイプと値を取得します。

成功した場合は true 、エラーが発生した場合は false を返します。

エラー メッセージを取得するには、 registry.getLastError() を使用します。

このクエリが正常終了した場合は、データ タイプは type キーワード変数に書き込まれます。

クエリが正常終了し、データ タイプが次のサポートされているデータ タイプのいずれかである場合は、データ値は value キーワード変数に書き込まれます。

#REG_DWORD - 整数

#REG_SZ - 文字列

#REG_EXPAND_SZ - 環境変数に対する拡張されていない参照を含む文字列

#REG_MULTI_SZ- 文字列配列

データ タイプが REG_EXPAND_SZ であり、expand が true である場合は、環境変数は返されたデータ値の中で拡張されます。

返される可能性のあるその他のデータ タイプのうち、現在サポートされていないものは次のとおりです。

#REG_BINARY

#REG_DWORD_LITTLE_ENDIAN

#REG_DWORD_BIG_ENDIAN

#REG_LINK

#REG_NONE

#REG_QWORD

#REG_QWORD

#REG_RESOURCE_LIST

registry.queryValue key2 "Notepad.exe" type:&type value:&val

   

registry.queryInfoKey <HKey> numSubKeys:<&int> numValues:<&int> 

サブキーの数とオープンされている HKey の値を取得します。

成功した場合は true 、エラーが発生した場合は false を返します。

エラー メッセージを取得するには、 registry.getLastError() を使用します。

クエリが正常終了した場合は、subKeys の数および値はそれぞれ numSubKeys: キーワード変数および numValues: キーワード変数に書き込まれます。

registry.queryInfoKey key2 numSubKeys:&numSubKeys numValues:&numValues

   

registry.isKeyOpen <HKey> 

指定された HKey がオープンされている場合は true を返します。

   

registry.isParentKeyOpen <HKey> 

指定された HKey の親 HKey がオープンされている場合は true を返します。

   

registry.isKeyConstant <HKey> 

HKey が定数(ルート)HKeyである場合は true を返します。

   

registry.getParentKey <HKey> 

指定された HKey の親 HKey を返します。

   

registry.getSubKeyName <HKey> <index> name:<&name> 

オープンされている HKey のサブキー名をインデックスで取得します。成功した場合は true 、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

正常に終了した場合は、この名前は name: キーワード変数に書き込まれます。

registry.getSubKeyName key2 i name:&vname

   

registry.getSubKeyNames <HKey> names:<&array> 

オープンされている HKey のサブキー名の配列をインデックスで取得します。成功した場合は true 、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

正常に終了した場合は、文字列名としてのサブキー名の配列は names: キーワード変数に書き込まれます。

registry.getSubKeyNames key2 names:&vnames

   

registry.getValueName <HKey> <index> name:<&name> 

オープンされている HKey の値名をインデックスで取得します。成功した場合は true 、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

正常に終了した場合は、この名前は name: キーワード変数に書き込まれます。

registry.getValueName key2 i name:&vname

   

registry.getValueNames <HKey> names:<&array> 

オープンされている HKey の値名の配列をインデックスで取得します。成功した場合は true 、エラーが発生した場合は false を返します。エラー メッセージを取得するには、 registry.getLastError() を使用します。

正常に終了した場合は、文字列名としての値名の配列は names: キーワード変数に書き込まれます。

registry.getSubKeyNames key2 names:&vnames

   

registry.getLastError() 

発生した最新のレジストリ エラーを記述する文字列を返します。

例:

registry.openKey HKEY_CLASSES_ROOT"*"accessRights:#readOnly key:&key2
 
registry.queryInfoKey key2 numSubKeys:&numSubKeys numValues:&numValues;numSubKeys;numValues
for i = 1 to 2 do
(registry.getSubKeyName key2 i name:&vname;print vname)
 
registry.isKeyOpen key2
 
registry.setvalue key2 "" #REG_SZ "123123" -- fails because opened with #readOnly access
registry.getLastError()
 
registry.getSubKeyNames key2 names:&names;names
registry.getvalueNames key2 names:&names;names
registry.queryValue key2 "InfoTip" type:&type value:&val;type;val
 
registry.createKey HKEY_CLASSES_ROOT ".123x" accessRights:#all key:&key1
registry.setvalue key1 "" #REG_MULTI_SZ #("zz","ww")
registry.queryValue key1 "" type:&type value:&val;type;val
registry.setvalue key1 "" #REG_SZ"123123"
registry.queryValue key1 "" type:&type value:&val;type;val
registry.deleteKey key1

レジストリに関連するグローバル変数

HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_PERFORMANCE_DATA 

関連事項