C# INIファイルから読み込んで実行するには?

このQ&Aのポイント
  • C#の勉強中に、INIファイルから情報を読み込んでパスを設定する方法が知りたいです。
  • 現在は直接パスを変数に格納していますが、INIファイルを使用したほうが効率的です。
  • どのようにしてINIファイルから情報を読み込んで利用するか、教えてください。
回答を見る
  • ベストアンサー

C# INIファイルから読み込んで実行するためには?

VisualStudio.NET2003 C#の勉強がてら、簡単なプログラミングをしています。 あるディレクトリからあるディレクトへとファイルをコピーする処理に関して (C:\test\→C:\Copy\test\) clsCopyDirectory .CopyDirectory(@strSourcePass,@strDestPass); それぞれの引数はコピー元フォルダパス、コピー先フォルダパスとなっています。 現在は直接string strSourcePass ="C:\test"; と変数に格納し、コピー処理のメソッドへ渡しているのですが、 INIファイルに設定されている情報を読み込んでパスを設定したいのですが、方法がわかりません。 何卒ご教授お願い致します。

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

  • ベストアンサー
  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 本題は、 > INIファイルに設定されている情報を読み込んでパスを設定したい で良いでしょうか? INI ファイルを読み込むための API 関数を、 DllImport 属性を使って P/INVOKE すれば良いです。 http://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html その他いろいろありますので、どれでもお好きなものをどうぞ。 http://www.google.co.jp/search?hl=ja&q=INI+C%23

関連するQ&A

  • INIファイルからのデータ読込みについて

    表題の実現方法について、どうしてもわからなかったので、質問を挙げさせていただきます。 会社から、INIファイルの内容を読み込んで、初期値設定に利用するように指示があり、実現方法がわからず、非常に困っています。 ライブラリを購入せずに、対応したいです。 どなたか、本内容にお詳しい方、ご教授下さい。 ◆開発環境 言語:C OS:Linux(Ubuntu 9.10) IDE:eclipse コンパイラ:gcc 4.4 ◆質問 1.セクションで区切られたIniファイルを読み込み、読み込んだデータを各種変数に格納したい。 《想定Iniファイル》 Test.ini [NETWORK] IPADDR=192.***.***.***.*** → char *IPADDRに格納したい PORT=****            → long PORTに格納したい [PRM1] Anum=***             → char *Anumに格納したい Bnum=***             → char *Bnumに格納したい Cnum=***             → char *Cnumに格納したい [PRM2] TIME1=**** TIME2=**** 2.上記1の処理を関数とし、main関数からコールして、mainプログラムの起動時にINIファイル内容を読み込みたい。

  • iniファイルについて

    C言語超初心者です。 上限値の設定で行き詰っています。 上限値設定ファイルをiniファイルで作成したいのですが、書き方が全くわかりません。 どうか、教えてください。 仕様は・・・ アプリケーションに数値の引数を与えて起動することで、アプリケーションにて設定した上限値まで数値をインクリメントして表示するプログラムを作成する。 よろしくお願いします。

  • VC++.net iniファイルパス指定の仕方

    VC++2005.netマネージでiniファイルを使いたいと思っています。 iniファイルから変数を読み込む関数GetPrivateProfileInt,GetPrivateProfileStringの引数にはiniファイルの絶対パス(c:\~set.ini)を指定しなければならないようです。 実行ファイルと同じ場所にiniファイルを置きたいのですが、これはどうやって指定するのでしょうか。 私が思いついたコードです。 String ^exepath = gcnew String(System::Windows::Forms::Application::ExecutablePath);//実行ファイルのパスを取得。 char charpath[500]={0}; sprintf(charpath,"%s",exepath->ToString);//string型からchar型へ変換する。 int len = strlen(charpath); charpath[len - ??] = \0;//実行ファイル名を消す char ininame[] = "setting.ini"; strcat(charpath,ininame); これは実行ファイルの絶対パスと実行ファイル名を取得し加工します。 c:\~~\prog\test.exe(string型の文字列) ↓ c:\~~\prog\test.exe(char型の文字列) ↓ c:\~~\prog\ (後ろつまり実行ファイル名の部分を削る) ↓ c:\~~\prog\setting.ini (iniファイル名を後ろに追加する。) ただ、これには問題がありこの変数を引数にしたのでは >'GetPrivateProfileIntW' : 1番目の引数を'const char[10]'から'LPCWSTRに変換できません。 と出ます。 どうすればiniファイルのパスを指定できるのでしょうか。

  • C#でiniファイルを使う

    初歩的な質問なのですが… sharpdevelopでC# .NETの勉強をしているのですが、 iniファイルに例えばフォームの位置や、 ユーザー設定項目を保存させて、その読み書きを したいのですが、調べてもなかなかヒットしません。 iniファイルを使う、というか、 要はユーザーが設定した内容を保持しておきたいだけなのです。 それをするためには、どのようにしたらよいのでしょうか。 簡単なサンプルコードなど教えていただけると助かるのですが、 このことについて解説してあるサイトの紹介などでもかまいません。 よろしくお願いします。

  • C#でiniファイルの書き込みがうまくいきません。

    C#初心者です。今回INIファイルを生成→書き込みを行うためのソースコードを書いたのですが、空ファイルの生成はうまくいくのにINIファイルへの書き込みがうまくいかず、空ファイルのままになってしまいます。なぜでしょうか? 以下ソースコード using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Runtime.InteropServices; namespace Loei_Server_ { /* ネットで公開されていたINIファイルに関するクラス。 難しいことは考えちゃアカン。 */ class IniFileHandler { [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileStringA")] public static extern uint GetPrivateProfileStringByByteArray(string lpAppName, string lpKeyName, string lpDefault, byte[] lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileInt(string lpAppName, string lpKeyName, int nDefault, string lpFileName); [DllImport("KERNEL32.DLL")] public static extern uint WritePrivateProfileString( string lpAppName, string lpKeyName, string lpString, string lpFileName); } class Program { static void Main(string[] args) { /* 日付を取得。 */ DateTime this_time = DateTime.Now; /* 多重起動するとマズイので多重起動していたら強制的に終了する。*/ if (System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName).Length > 1) { Console.WriteLine(" [Error] " + "[" + this_time.ToString() + "] Application already has started. This program is on the nature, you can not multi-boot."); return; } /* コンフィグデータの確認。なかったら勝手に生成する。 */ if (!File.Exists("Config.ini")) { Console.WriteLine(" [Warning] " + "[" + this_time.ToString() + "] Config.ini file could not be found. I created you."); /* 空のINIファイルを生成。 */ StreamWriter writer = new StreamWriter("Config.ini", true); /* 生成したINIファイルにいろいろ書き込む。 */ IniFileHandler.WritePrivateProfileString("Loei_Server_", "TCP_IP", "localhost", "Config.ini"); IniFileHandler.WritePrivateProfileString("Loei_Server_", "TCP_HOST", "25565", "Config.ini"); Console.WriteLine(" [Info] " + "[" + this_time.ToString() + "] It has generated an Config.ini file!"); }

  • バッチでのファイルのコピー

    ファイルのコピーをしたいのですが、 C:\aaa\bbb\???\test.txt と、「bbb」のディレクトリまでは分かるのですが、 必ず「???(任意)」のディレクトリが入ります。 そのディレクトリの下には必ず対象となるtest.txtと いうファイルが存在します。 「???」がなければ、 copy c:\ddd c:\aaa\bbb\test.txt と出来るのですが、「???」のために取ることが出来ません。 どなたか、ご存知の方がいましたら教えて下さい。 宜しくお願い致します。

  • C#でインターネット一時ファイルの全ファイル情報を取得

    C#でインターネット一時ファイルの全ファイル情報を取得したいのですが、 そのようなメソッドはあるのでしょうか? ディレクトリのパスを取得するメソッドはありますが、 ファイルのパスを取得するのはみあたりません。 最終的にインターネット一時ファイルをコピーしたいので。

  • Configuration File (php.ini) Pathにつ

    Configuration File (php.ini) Pathについて Apache2.2 PHP5.3.2 をWindowsXPマシンにインストールしました。 Configuration File (php.ini) Pathは現在C:\WINDOWSになっています。 httpd.conf内にPHPIniDir "C:/PHP5"(PHPインストールディレクトリです) という記述をし、PHP.iniファイルを同ディレクトリに追加したのですが、 Configuration File (php.ini) Pathは変わらず、PHPが動作しません。 (Apacheは再起動しています) PHPIniDir "C:/WINDOWS"でもダメです。 現状では、 ・PHP.iniをC:\WINDOWSにおく ・httpd.conf内にPHPIniDir "C:/PHP5"を記述(C:\PHP5以下にはPHP.iniをおかない) だとうまくいきます。 ちなみにLoaded Configuration Fileはnoneになっています。 ことの発端は、date関数でワーニングが出たので、調べたところPHP.ini内に date.timezone = "Asia/Tokyo" を追加するとなおるということを見たので修正したのですがなおらなかったことからです。 希望としては ・httpd.conf内にPHPIniDir "C:/PHP5"を記述し、PHP.iniをC:/PHP5以下におきたい  (Configuration File (php.ini) PathをC:/PHP5に変更したい) ・date_default_timezone_setという関数ではなくPHP.iniの設定で上記ワーニングを  なくしたい です。 XAMPPを使用…以外でご回答頂けるとありがたいです。 よろしくお願いしますm(__)m

  • 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 です。 宜しくお願いします。

  • powershellとiniファイル

    ps1よりiniファイルを読み込むスクリプトを作成中です。 iniファイルには以下の記載をしています。 いわゆる連想配列です。 $info = @{} $info[0] = @{ host=testest1 ip=192.168.0.0 } $info[1] = [ host=testest2 ip=192.168.0.1 } 一方、ps1は以下の通り、コードを記述しています。 $INI_PATH = @(Split-Path $script:myInvocation.MyCommand.Path -Parent).Trim() $INI_FILE = "ini_test2.ini" $INI_FULLNAME = $INI_PATH + "\" + $INI_FILE $PARAMETER = @{} Get-Content $INI_FULLNAME | %{$PARAMETER += ConvertFrom-StringData $_} $host_info = $PARAMETER.info[0] #値格納 $host_info いざ、実行すると、 「ConvertFrom-StringData : データ行 '}' の形式が '名前=値' ではありません。」、「項目は既に追加されています。」とのエラーが出ます。 どのように変えればエラーがなくなりますでしょうか。 Powershellの初歩的な質問で申し訳ないのですが、ご回答をよろしくお願いいたします。

専門家に質問してみよう