マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

WOW64についての情報を纏めている。

プログラム開発

システムファイル、レジストリのリダイレクト

ファイルシステムリ・ダイレクター

レジストリ・リダイレクター

リダイレクトされないフォルダ

Program Files のフォルダの場合は少々勝手が違ってきます。

  • .NETでは
    • [System.Environment.SpecialFolder?.ProgramFiles?]のようにフォルダ情報を取得すると、
      返ってくるのは、[%systemdrive%\Program Files (x86)]フォルダになります。
  • また、[%systemdrive%\Program Files]フォルダに対してファイルの作成などを
    おこなってもリダイレクトはされず、そのままそのフォルダに I/O がおこなわれます。
  • VC++では

64bitかWOW64(32bit)かを見分ける

COM開発・利用

登録

開発したCOMを登録するRegsvr32にも32版64版があります。

- 64 ビット版は %systemroot%\System32\regsvr32.exe です。
- 32 ビット版は %systemroot%\SysWoW64\regsvr32.exe です。
参照URL: http://support.microsoft.com/kb/249873/ja

DCOM

COMの設定を行うdcomcnfg.exeにも32bit版があるもよう。

dcomcnfg.exe /32

COMクライアント

VBS

  • 32ビット版のCScriptコマンドを使ってVBScriptのプログラムを実行するには、
    CScriptコマンドを「C:\Windows\SysWOW64\CScript.exe」と記述します。
    cf. 6.64ビット環境でVBScriptを実行する方法
    - CWindowsSysWOW64CScript - VBScript & JScript基礎
    http://www.happy2-island.com/vbs/cafe01/capter00600.shtml

Office VBA

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

ASP

コチラを参照。

データプロバイダ

ここでは、32bit用、64bit用データプロバイダに起因する問題をまとめています。
ADO.NETデータプロバイダ一般的なトピックはコチラを参照下さい。

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

ODP.NET

組合

  • ODP.NETのDLL(Oracle.DataAccess?.dll)は32/64bit決め打ちで、anyCPUになっていないので、
    クライアントプログラムのターゲット(32/64bit)に一致したものをインストールする必要がある。
  • 警告(warning)は、
    上位プログラムがanyCPU、下位プログラムが32/64bit決め打ちの場合に出力される。
    Visual Studio・MSbuildの設定(=*.cs or vbproj、*.slnファイル)が合っていれば問題はない。

インストール

  • 64bit環境で、DBMSが同居しており、クライアントがWOW64で32bitの場合、
    Oracleクライアント32bitをインストールする必要がある。
  • 最近マネージドのOracleクライアント不要のODP.NETがリリースされたようですので、
    こちらを使用すれば簡単かもしれません。詳しくはコチラを参考にして下さい。

ODBC

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

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

問題は、OLEDBが64ビットに対応していない件ですが、以下の代替のドライバがあり、
これをインストールしてConnectString?を変更することにより、プログラム変更なく動作しました。

OO4O

  • OO4Oはdisconで、64bit対応がされていないようです。

実際は、WOW64環境もサポートされていないようです(Windows Server 2008 R2以降への以降はNG)。

その他

コード・アクセス・セキュリティ ポリシーの設定

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

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

参考情報


Tags: :Windows, :移行, :.NET開発


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-07 (金) 12:59:37 (379d)