Open棟梁Project - マイクロソフト系技術情報 Wiki

* 目次 [#q793ef6e]
#contents

*概要 [#eb2460b4]
WOW64についての情報を纏めている。

*プログラム上の注意点 [#u7f970c8]
**システムファイル、レジストリのリダイレクト [#qf5b120e]

-32 bit アプリケーションを 64 bit 環境 (WOW64) に移植する際の~
システムファイル - レジストリの扱いについて - 松崎 剛 Blog - Site Home - MSDN Blogs~
http://blogs.msdn.com/b/tsmatsuz/archive/2009/04/17/64-bit-wow-32bit-system-file-registry.aspx

***ファイルシステムリ・ダイレクター [#d5f3d5b4]

-ファイルシステムリダイレクター (Windows)~
http://msdn.microsoft.com/ja-jp/library/aa384187.aspx

***レジストリ・リダイレクター [#cc322f34]

-レジストリ リダイレクタ (Windows)~
http://msdn.microsoft.com/ja-jp/library/aa384232.aspx

***リダイレクトされないフォルダ [#ca414606]
Program Files のフォルダの場合は少々勝手が違ってきます。

-.NETでは
--[System.Environment.SpecialFolder.ProgramFiles]のようにフォルダ情報を取得すると、~
返ってくるのは、[%systemdrive%\Program Files (x86)]フォルダになります。~

--また、[%systemdrive%\Program Files]フォルダに対してファイルの作成などを~
おこなってもリダイレクトはされず、そのままそのフォルダに I/O がおこなわれます。

-VC++では

--x64OS上でWOW64アプリからSHGetFolderPath()~
を使用してProgram Filesのパスを取得できない?~
http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/f47738f7-bf13-42f3-8945-5762f5dc7d5e/
 WOW64で動作しているアプリでSHGetFolderPath()APIを使用し、
 CSIDL_PROGRAM_FILES_COMMONを指定しています。
 すると、Program Files\Common Filesではなく、
 Program Files (x86)\Common Filesが取得されます。

---SHGetFolderPath function (Windows)~
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762181.aspx

**64bitかWOW64(32bit)かを見分ける [#t5f448a9]

-Windows 64-32 bit OS を判別する方法 - ソフトウエア開発の備忘録~
http://d.hatena.ne.jp/ash39/20110708/1310135805
--IsWow64Process function (Windows)~
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684139.aspx

*コード アクセス セキュリティ ポリシーの設定 [#xd1d3f0f]
こちらにも同様に32bit設定と64bit設定があるようです。~
ホストするアプリが32bitの場合、対象アプリが64bitでも、~
32bitのコード アクセス セキュリティ ポリシー設定を参照するようです。

 IE9(32bit) → Excel2010(64bit) → DLL(64bit) といった動作をする場合、
 実行するプロセスは 64bit だが、CAS 設定は IE9 から、32bit のものを参照している。

*32bit用、64bit用データプロバイダに起因する問題 [#n7742752]

**ODP.NET [#x8197aae]
ODP.NETのDLL(Oracle.DataAccess.dll)はanyCPUになっていないので、~
クライアントプログラムのターゲットに一致したものをインストールする必要がある。

**COM [#rfe01ad0]

***VBS [#sf712acb]
32ビット版のCScriptコマンドを使ってVBScriptのプログラムを実行するには、~
CScriptコマンドを「C:\Windows\SysWOW64\CScript.exe」と記述します。

***Office VBA [#p625d44b]
-Officeは64bitOS上でも32bitを使用した方が良い(実績的に)。~
64bitのOfficeを採用する場合は色々調査・検証が必要になる。

-ドライバはWOW64上で動作しないため64bitプラットフォームでは64bit対応~
されたものを使用する必要があるのですが、ODBC、OLEDBドライバは所謂ドライバ~
(デバイス・ドライバ、バス・ドライバ、フィルタ・ドライバ)とは異なるため、~
WOW64上でも使用可能ですが、詳細は其々サポート状況を確認が必要です。

--各プラットフォーム(32bit or 64bit + 対象データソース)の~
サポートのあるODBC、OLEDBドライバが用意されているか確認が必要。

***ODBC [#u4f9b72d]
Windows 7(64bit) / Office 2010(32bit) 環境での検証結果

-64bit の ODBCアドミニストレータ(※1)の[ユーザDSNタブ]でExcel Filesを選択したところ~
エラーとなり、追加ボタンで追加できるドライバーの一覧でも Excel はありませんでしたので、~
この構成の場合32bit のExcel Files ODBC ドライバのみが追加されるもようです。~

-32bit の ODBCアドミニストレータ(※2)の[ユーザDSN]タブではExcel Files を選択できる。~

※1:C:\Windows\System32\odbcad32.exe~
※2:C:\Windows\SysWOW64\odbcad32.exe~

***OLEDB [#d77a2164]
なお、OLEDBについては、2008R2 64bit上で32bit、64bitの両方の~
Jet OLE DB プロバイダが存在し、それぞれ動作したことを確認しています。

問題は、OLEDBが64ビットに対応していない件ですが、以下の代替のドライバがあり、~
これをインストールしてConnectStringを変更することにより、プログラム変更なく動作しました。
-Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント
--AccessDatabaseEngine_X64.exe~
http://www.microsoft.com/en-us/download/details.aspx?id=13255

-参考
--Microsoft,jet,OLEDB,4.0 - マイクロソフト コミュニティ~
http://answers.microsoft.com/ja-jp/windows/forum/windows_7-windows_programs/microsoftjetoledb40/88ba7315-9c05-43cb-9d22-2bd5f59f3450?msgId=3165281a-fd76-4217-8d83-0fabc83b737e
---ConnectionString プロパティのプロバイダ引数を、~
"Microsoft.ACE.OLEDB.12.0"に設定する必要がある。

--64 ビット環境での各種データ アクセス  サポート エンジニアからのアドバイス~
http://msdn.microsoft.com/ja-jp/data/gg607264.aspx

***OO4O [#v281156a]
OO4Oは64bit対応がされていないようです。

-OO4Oとは~
http://www.doppo1.net/oracle/middle/oo4o.html

64bitと直接関係ありませんが、~
最近、以下の問題がありました。

-PSR 11.2.0.3を新規インストールした環境で、OO4Oアプリケーションの実行が失敗する~
https://krown.oracle.co.jp/krown/oisc_showDoc.do?c_criterion=num&id=156843
 [原因]
 現在開発部門で調査中ですが、インストール時にoip11.dllのレジストリ登録に
 失敗し、OracleInProcServerがCOMコンポーネントとして登録されていない状態
 となることが直接的な原因です。
 
 ・・・
 
 [回避策]
 次の手順にしたがって、手動でレジストリへ登録してください。
 (1) コマンド・プロンプトを開きます。
 (2) 次のコマンドを実行します。
  cd %ORACLE_HOME%\bin     <== インストール先のORACLE_HOMEのパスを指定
  regsvr32.exe oip11.dll
  regsvr32.exe oradc.ocx

*参考情報 [#y4ed1f95]

-WOW64 - Wikipedia~
http://ja.wikipedia.org/wiki/WOW64

-Win32アプリケーションを実行するWOW64 - @IT~
http://www.atmarkit.co.jp/fwin2k/special/win64_02/win64_02_01.html

-WOW64 実装の詳細 (Windows)~
http://msdn.microsoft.com/ja-jp/library/aa384274.aspx


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS