現在オフラインです。再接続するためにインターネットの接続を待っています

Access 2000 および Access 2002 で、安全でない関数が実行されないように Jet 4.0 を構成する方法

この記事は、以前は次の ID で公開されていました: JP239482
この資料は Microsoft Access データベース (.mdb) についてのみ記述したものです。

難易度 : 中。基本的なマクロ、コーディング、相互運用性に関する知識が必要です。
Microsoft Office Access 2003 については、次の資料を参照してください。294698

重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
概要
Microsoft Jet 4.0 データベース エンジンを使用すると、Microsoft Jet Expression Service から安全でない Microsoft Visual Basic for Applications 関数を呼び出すことができます。Jet Expression Service は、フォーム、レポート、およびクエリ内の式を評価するために使用されます。

たとえば、次の SQL ステートメントを使用すると、コンピュータ上の現在のフォルダからすべてのファイルが削除されます。
SELECT Shell("Cmd /c del *.*") As c1 From Customers
: この例の Shell コマンドは、Microsoft Windows NT で機能します。Microsoft Windows 95 または Microsoft Windows 98 が実行しているコンピュータで機能させるには、このコマンドを次のように修正する必要があります。
SELECT Shell("Command.com /c del *.*") As c1 From Customers
ファイルを削除したりコンピュータをフォーマットしたりする Shell コマンドなど、クエリを実行するコンピュータに害を与える可能性のある Visual Basic for Applications コマンドが式に含まれている場合、セキュリティのリスクが生じます。

この資料の内容

はじめに
式の評価は、多くの状況下では望ましい動作です。しかし、式の一部に Shell コマンドが含まれている場合は、それが解析され、コンピュータ上で実行されます。

そのような動作は Sandbox モードによってブロックできます。ただし、Microsoft Jet 4.0 のデフォルトでは、Sandbox モードは Microsoft Access で実行されるクエリに対して有効になっていません。ODBC (Open Database Connectivity) など、Access を除くすべてのアプリケーションではこれが有効になっています。

先頭に戻る

Sandbox モードを有効または無効にする方法について

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

Access 以外のアプリケーションで Sandbox モードを有効にできます。これを行うには、Microsoft Jet 4.0 SP3 以降をインストールする必要があります。この更新プログラムをインストールした後、次に Jet を実行するときに、新規のレジストリ キーがレジストリに追加されます。このレジストリ キーを使用すると、このタイプのセキュリティ リスクを防ぐことができます。次のレジストリ キーが追加されます。

\\HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\engines\SandboxMode


Jet 4.0 の最新の Service Pack を入手する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
239114 Microsoft Jet 4.0 データベース エンジン用の最新の Service Pack の入手方法
悪意のある攻撃に対するシステムの抵抗力を高め、それと同時に古いバージョンのアプリケーションも継続して動作可能とするために、Jet 4.0 Service Pack 8 では Sandbox モードの操作が変更され、ユーザー自身で完全に制御できるようになっています。

キーの値には、次のように、すべてを許可する 0 (ゼロ) から、最低限を許可する 3 まで設定できます。

設定説明
0Sandbox モードが常に無効になります。
1Sandbox モードは Access アプリケーションに対して使用されますが、Access 以外のアプリケーションに対しては使用されません。
2Sandbox モードは Access 以外のアプリケーションに対して使用されますが、Access アプリケーションに対しては使用されません。これがデフォルトの値です。
3Sandbox モードが常に使用されます。

Sandbox モードを有効にした後で、Jet 4.0 クエリで安全でない Visual Basic for Applications 関数を使用しようとすると、次のエラー メッセージが表示されます。

式に未定義関数 'functionname' があります。
先頭に戻る

Sandbox モードの操作を実装する

Sandbox モードの実装方法は Jet 4.0 Service Pack 8 で拡張されており、Access データベースとの互換性が向上しています。以前の Sandbox モードの実装は、ほとんどの Access アプリケーションに対して過度に制限的でした。Jet 4.0 Service Pack 8 以降でも、強化された Sandbox モードは安全でない Visual Basic for Applications 関数をブロックしますが、Jet 4.0 Service Pack 8 ではユーザー定義の関数を実行できます。

先頭に戻る

Jet 4.0 Service Pack 3 以降で Sandbox モードの操作を使用する

Sandbox モードが有効になっているとき、Jet クエリで使用可能な関数の一覧は次のとおりです。一覧に表示されていない関数は、Sandbox モードでは使用できません。
ABSarrayASCASCBASCWATN
CBOOLCBYTECCURCDATECDBLchoose
CHRCHR$CHRBCHRB$CHRWCHRW$
CINTCLNGCOSCSNGCSTRCVAR
CvDateCVErrdateDATE$DATEADDdateDiff
datePartDATESERIALDATEVALUEdayDDBerror
error$EXPfixformatformat$fv
hexhex$HOURIIFIMEStatusinStr
INTIPMTIRRisDateisEmptyISERROR
isNullisNumericisObjectlCaselCase$LEFT
LEFT$LEFTBLEFTB$LENLENBLOG
lTrimlTrim$MIDMID$MIDBMIDB$
MINUTEMIRRMONTHNOWNPERNPV
octoct$partitionPMTPPMTPV
QBColorRATERGBRIGHTRIGHT$RIGHTB
RIGHTB$rndroundrTrimrTrim$SECOND
sgnSINSLNspacespace$sqr
strstr$strCompstrConvstringstring$
switchSYDTANTIMETIME$timer
timeSerialTIMEVALUETRIMTRIM$typeNameuCase
uCase$valvarTypeWEEKDAYYEAR

先頭に戻る

Jet 4.0 Service Pack 8 の使用時に Jet クエリまたは Access プロパティから呼び出された場合にエラーが発生する Visual Basic for Applications 関数について

次の Visual Basic for Applications 関数は、Jet クエリ内の式または Access プロパティから呼び出されたときエラーを発生します。
AppActivateBeepCalendarCallByNameChDir
ChDriveCommandCommand$CreateObjectCurDir
CurDir$DeleteSettingDoEventsEnvironEnviron$
EOFErrFileAttrFileCopyFileDateTime
FileLenFreeFileGetAllSettingsGetAttrGetObject
GetSettingInputInput$InputBInputB$
KillLoadLocLOFRandomize
ResetSaveSettingSeekSendKeysSetAttr
ShellSpcTabUnloadUserForms
Width

先頭に戻る
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 239482 (最終更新日 2004-08-10) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
acc2000 acc2002
プロパティ

文書番号:239482 - 最終更新日: 09/22/2005 10:15:05 - リビジョン: 6.0

  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft ODBC (Open Database Connectivity) Driver for Access 4.0
  • Microsoft Office 2000 Professional
  • kbhowto kbconfig kbinfo kbfix KB239482
フィードバック