アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
C#2005で開発しております。

WinXPで作成したexeで、C:\Windows\System32の下のiniファイルを読み込んでおります。
このexeを64bit版Win2008Serverで実行したいのですが、
C:\Windows\SysWOW64にインストーラーで作成されたiniファイルを以下のコードで読み込むことが出来ません。

string strIniFilePath = Environment.SystemDirectory + "\\****.INI";

64bit版で32ビットのものを実行する場合は、C:\Windows\SysWOW64に読み込みをしなければならないと認識しております。
また、64bit版Win2008Serverのsystem32フォルダに置くと、読み込むことが出来ます。
iniファイルはdllと違い、system32の下に置かなければいけないのでしょうか。

お手数ですが、ご教授いただきたくお願い申し上げます。

A 回答 (2件)

http://itpro.nikkeibp.co.jp/article/COLUMN/20051 …

「そこで64ビットWindows(WOW64)は,32ビット・アプリケーションが,例えばC:\WINDOWS\system32にアクセスすると,C:\WINDOWS\SysWOW64にリダイレクトする(図14[拡大表示])。」
と言うのが重要。

つまり
・32ビットアプリケーションは、インストーラーにより、C:\Windows\SysWOW64にインストールしなければならない
・32ビットアプリケーションをC:\Windows\System32にインストールしてはならない(iniファイルも然り。C:\Windows\System32に32ビット用iniファイルを置いてはならない)
・32ビットアプリケーションは、C:\Windows\SysWOW64にアクセスする場合は、C:\Windows\System32にアクセスし、WOW64によってリダイレクトして貰わねばならない
・32ビットアプリケーションは、C:\Windows\SysWOW64にアクセスするようなハードコーディングをしてはならない
って事です。

なお、
string strIniFilePath = System.Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\****.INI";
の方が安全です。

この回答への補足

ご回答ありがとうございます。
私も上記のページを確認し、記述していただいたコードも試したのですが、C:\Windows\SysWOW64のiniファイルを読み込むことが出来ませんでした。
リダイレクトをしているかどうか確認できるコードはあるのでしょうか。

補足日時:2009/12/10 03:17
    • good
    • 0

C# 2005の初期設定では


プラットフォームターゲットがAny CPUになっているので、
x86環境ではx86アプリケーションとして
x64環境ではx64アプリケーションとして動作します。


なので、あなたが32ビットだと思っているプリケーションは
実際にはx64アプリケーションとして動作しているのでしょう。

x86/x64のどちらで動作しているかは
タスクマネージャのプロセスタブでイメージ名に *32 がついているかどうかを
確認することで分かります。


10 行でズバリ !! 64 ビット対応 .NET アプリケーションの開発 (C#)
http://msdn.microsoft.com/ja-jp/events/dd279507. …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!