• ベストアンサー

32ビットのアプリで、64ビットOSのシステムフォルダ先のiniファイルを読み込むには

お世話になります。 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の下に置かなければいけないのでしょうか。 お手数ですが、ご教授いただきたくお願い申し上げます。

noname#164045
noname#164045

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8512/19351)
回答No.1

http://itpro.nikkeibp.co.jp/article/COLUMN/20051121/224935/ 「そこで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"; の方が安全です。

noname#164045
質問者

補足

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

その他の回答 (1)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

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.aspx

関連するQ&A

  • 64bitのwindowsサーバーで32bit用のコマンドを使用する場

    64bitのwindowsサーバーで32bit用のコマンドを使用する場合 こんにちは。はじめまして。 64bit版widowsサーバーで32bitでしか動かないプログラムをバッチで走らせたいのですがどう設定すれば良いのでしょうか。 c:\windows\syswow64\cmd.exeでコマンドプロンプトを開いてそこでプログラムを走らせると起動します。これをバッチファイルで起動する様にしたいです。 どなたか分かる方教えて下さい。 よろしくお願いします。

  • ウインドウズフォルダにまつわる事

    VB2008でWindowsXP上でINIファイルの読み書きを行うプログラムを作っています。 VB.NETで特殊フォルダを取得したいのですが、以下の場合、 C:\Windows\System32となるのですが、C:\Windowsのようにウインドウズフォルダを返す方法はありますか? ' System ディレクトリ MessageBox.Show(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System)) あとiniファイルをパスなしで作成するとC:\Windowsに作られるのですが デフォルトでそうなっているのでしょうか? WritePrivateProfileString("キーワード", "項目", 値, "test.ini") exeのあるカレントにiniファイルを作成したい場合などパスを求める方法等も知りたいです。

  • system.iniの変更が保存できません

     自宅で使用のWindows Vista Home Premiumで動作を速くしようとおもい、system.iniを開き"MinTimeslice=3"を追記しようとしたのですが変更を保存できませんでした。  エラーメッセージは以下のとおりとなります。 ========================================================= ファイル C:\Windows\system.ini を作成できません。 パスおよびファイル名が正しいか確認してください。 =========================================================  因みに、system.iniのプロパティをみても[読み取り専用]のチェックはしていません。  どなたか解決策をご存知の方がおりましたら教えていただけますでしょうか、よろしくお願いします。

  • boot.iniファイルが消えてしまいます

    初めまして、初心者な質問で失礼します。 昨日、PCをいつもどおり立ち上げようとした時、黒い画面に Invalid BOOT.INI file Booting from C:\windows\ という文字が出て止まってしまいました。 その後USB無線LAN機器を取り外してから電源を入れたところ、いつもと同じように立ち上がりました。 多分USBに差したままだったからいけないんだなと思ったんですが、少し気になってboot.iniのことを初心者なりに調べましたらなくてはならないファイルということで…(本当に初心者ですみません) フォルダオプションで設定をしてboot.iniファイルを見られる状態にしてからローカルディスクC:\を見てみたのですが、boot.iniはありませんでした。 その後「ファイル名を指定して実行」で調べてみたのですがやっぱりありません。 C:\windows\pssフォルダにバックアップがあればそれをC:\にコピーして名前をboot.iniに変えれば良いとどこかで見たので覗いてみたのですが、そのバックアップファイルもありません。 とりあえず無ければ作ろうとhttp://qanda.rakuten.ne.jp/qa1742843.htmlや http://answers.microsoft.com/ja-jp/windows/forum/windows_xp-system/c%EF%BE%84%EF%BE%9E%EF%BE%97%EF%BD%B2%EF%BE%8C/6d9a851c-2bed-4545-ba5f-0041901f46eb 等も見て手動でファイルを作りました。 起動している内はファイルがあるんですが、再起動するとなくなっています。 USB無線LANが差さっていなければやっぱり普通に起動しますし、動作も特に問題ありません。 システムのプロパティの「起動と回復」設定はboot.iniが無いため開かないのとboot.iniファイルを作ると消えるのだけは気になるのですが…。 これは無くてもいいものなんでしょうか…? 使用しているPCは Windows XP HomeEdition FMV CE30G7 です。 宜しくお願いします。

  • Win iniフォルダに変なファイルが挿入されている

    Win iniのWindouwsフォルダが下記のようなファイルに書き換えられているのですが正規のファィルに直す方法を教えて下さい。 .run=c:windows\natal.src.c:\natal.pif .run=c:\windows\SPEEDY.src

  • XAMPPのmy.iniファイルについて

    WindowsXPにXAMPPをインストールしました。 いまApache,php,mysqlの文字コードをEUC-JPに 統一する設定を行っています。 http.confの設定が終わり、mysqlの設定ファイルで あるmy.iniを編集しようとしたのですが、 ファイルが見つかりません。 本には、c:\WINDOWSフォルダにあると書いて あったのですが、、、、 yahooで検索したら、XAMPPではなくmysqlを単独で インストールした場合は、mysqladmin.exeを 実行すれば自動的にファイルが生成されるという ことだったので、試しにmysqladmin.exeを実行しましたがファイルは生成されませんでした。 XAMPPでmysqlをインストールした場合、my.iniファイルの生成はどのようにすればよいのでしょうか?

    • 締切済み
    • PHP
  • Windows7でiniファイルが作成されません

    最近Windows7の64bit版を買いました。 DDwin32というXP用の辞書検索ソフトをインストールしたところ、Windows7ではddwin.iniが作成されません。XPではddwin.iniが作成されてこの中に検索履歴が保存されていました。 iniファイルが見あたらないため検索履歴を消去できずに困っています。 検索履歴は一体どこに保存されているのでしょうか?またXPのようにiniファイルを作成できるように設定を変更できるのであればどこで行えば良いのでしょうか?

  • 'wininit.exe' を読み込みまたは実行で きませんのエラー

    起動時に以下のようにメッセージが出ます。 「wininit.exe 指定されたデバイスパス又はファイルへの アクセスは拒否されました。」 「WIN.INIに指定されてるwininit.exeを読み込み又は 実行できません。 ファイルがあるか確認してください。又はWIN.INIファイルの指定を 削除してください。」 win.iniには《load=c:\windows\system\wininit.exe》となっており、 c:\windows\system\wininit.exeファイルは有ります。 それをダブルクリックすると《プログラム開始エラー》のタイトルで アイコンがビックリマークのダイアログが出ます。 前回の使用時にはプログラムを何もインストールをしていませんしDLLなどの ファイルを削除した記憶はありません。 回復の方法をご存知の方、よろしくご教示ください。お願いします。

  • ウイルス感染!

    Windows 98 SE で System Works 2001 を使用しています。 wininit.exe がウイルスに感染し、Norton AntiVirus で検疫し sarc.com に報告したところ、 C:\WINDOWS\SYSTEM\wininit.exe is a worm program called W32.HLLW.Bymer that is also infected with the W32.Kriz virus. と返事が帰ってきました。 wininit.exe 自体は c:\windows にあったのですが、再起動すると様子がおかしい(wininit.exe が実行できないとDOS窓で警告される)ので、C:\WINDOWS\Win.ini をエディタで開くと、「load=c:\windows\system\wininit.exe」となっております。 念のため別のマシン(Windows 98)で確かめると、wininit.exe は c:\windows にあり、Win.ini には、「load=」と wininit.exe を実行するようにはなっていませんでした。 また不思議なことに、エディタによる Win.ini のバックアップファイルが専用フォルダあって、日付は昨日となっていました。当然、このファイルを開いたり編集したりした覚えはありません。それに反して、それから20時間ほど立っているのに、つまり何度もwininit.exe を実行しているはずなのに、Norton AntiVirus が警告するまでは発動していなかったということになります。 C:\WINDOWS\wininit.exe はそのままにしております(C:\WINDOWS\SYSTEM\wininit.exe は、C:\WINDOWS\wininit.exe とは別物で、何かの悪さをするプログラムで、除去済みと理解しています)が、問題はありますか? また正しい処理はどうなのでしょう? さらに、Win.ini を「load=」と書き換えましたが、これもどうなんでしょう? 最後に、感染源はメールの添付ファイルやリムーバルメディアなどではないことは確かなのですが、どこかのサイトを閲覧していて感染したのでしょうか?

  • システムファイルチェッカー・・・ ???

    ちょっとパソコンがおかしくなったので、とりあえずこれをやってみようと思って実行してみたのですが、ファイルを復元する際の復元元がわからない場合はどうしたらいいのでしょうか・・・ 最初にでたのが ファイルが、USER.EXE 場所がC:\WINDOWS\SYSTEM ていう。。。 すいません、全然詳しくなくて、質問もかなりつたないものなんですが、どなたか回答お願いします

専門家に質問してみよう