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

文書翻訳 文書翻訳
文書番号: 239482 - 対象製品
この記事は、以前は次の 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 まで設定できます。

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

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 モードでは使用できません。
元に戻す全体を表示する
ABS array ASC ASCB ASCW ATN
CBOOL CBYTE CCUR CDATE CDBL choose
CHR CHR$ CHRB CHRB$ CHRW CHRW$
CINT CLNG COS CSNG CSTR CVAR
CvDate CVErr date DATE$ DATEADD dateDiff
datePart DATESERIAL DATEVALUE day DDB error
error$ EXP fix format format$ fv
hex hex$ HOUR IIF IMEStatus inStr
INT IPMT IRR isDate isEmpty ISERROR
isNull isNumeric isObject lCase lCase$ LEFT
LEFT$ LEFTB LEFTB$ LEN LENB LOG
lTrim lTrim$ MID MID$ MIDB MIDB$
MINUTE MIRR MONTH NOW NPER NPV
oct oct$ partition PMT PPMT PV
QBColor RATE RGB RIGHT RIGHT$ RIGHTB
RIGHTB$ rnd round rTrim rTrim$ SECOND
sgn SIN SLN space space$ sqr
str str$ strComp strConv string string$
switch SYD TAN TIME TIME$ timer
timeSerial TIMEVALUE TRIM TRIM$ typeName uCase
uCase$ val varType WEEKDAY YEAR

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

次の Visual Basic for Applications 関数は、Jet クエリ内の式または Access プロパティから呼び出されたときエラーを発生します。
元に戻す全体を表示する
AppActivate Beep Calendar CallByName ChDir
ChDrive Command Command$ CreateObject CurDir
CurDir$ DeleteSetting DoEvents Environ Environ$
EOF Err FileAttr FileCopy FileDateTime
FileLen FreeFile GetAllSettings GetAttr GetObject
GetSetting Input Input$ InputB InputB$
Kill Load Loc LOF Randomize
Reset SaveSetting Seek SendKeys SetAttr
Shell Spc Tab Unload UserForms
Width

関連情報

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

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

プロパティ

文書番号: 239482 - 最終更新日: 2005年9月22日 - リビジョン: 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
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com