小弟在2005下写的程序,在执行路径下带一个ini文件,调试的时候一切正常,可以正常读取
但是我把程序在外部用双击执行的时候,读取ini文件就会出错我读取ini路径时候是这样:
application.executepath.replace("xxx.exe","ini.ini");
外部执行就会出错。
但是当我把ini路进写成绝对路径的时候外部执行就可以正常读取配置,问各位是为什么?

解决方案 »

  1.   

    Path.GetDirectoryName(Application.ExecutablePath) + "\\ini.ini"
      

  2.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;
    using System.Text;
    namespace iniprocess
    {
     
     public class Form1 : System.Windows.Forms.Form
     {
      private System.Windows.Forms.TextBox textBox1;
      private System.Windows.Forms.Button button2;
      private System.Windows.Forms.Button button1;
      
      [DllImport("kernel32")]
      private static extern long WritePrivateProfileString(string section,
       string key,string val,string filePath);
      [DllImport("kernel32")]
      private static extern int GetPrivateProfileString(string section,
       string key,string def, StringBuilder retVal,
       int size,string filePath);  public void IniWriteValue(string Section,string Key,string Value,string filepath)//对ini文件进行写操作的函数
      {
       WritePrivateProfileString(Section,Key,Value,filepath);
      }
            
      public string IniReadValue(string Section,string Key,string filepath)//对ini文件进行读操作的函数
      {
       StringBuilder temp = new StringBuilder(255);
       int i = GetPrivateProfileString(Section,Key,"",temp, 
        255, filepath);
       return temp.ToString();  }
        private void button1_Click(object sender, System.EventArgs e)
      {
       
       this.textBox1 .Text= IniReadValue("ODBC 32 bit Data Sources","MS Access Database","e:\\temp\\ODBC.INI");
      
      }  private void button2_Click(object sender, System.EventArgs e)
      {
       
       IniWriteValue ("ODBC 32 bit Data Sources","MS Access Database",this.textBox1 .Text,"e:\\temp\\ODBC.INI");
      }
     }
    }