我用[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key,    string def, byte[] retVal, int size, string filePath);
        [DllImport("kernel32")]
       private static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
    后写的程序在WIN XP的 平台下可以转,但当我把程序 烧到 Window CE 平台下后,就不行了,提示没有找到 kernel32,我想CE下可能没有这个dll,请问有办法解决这个问题吗 ???在C#有没有其他的类库可以来替代这个函数???谢谢好心的高手来替我解决。
   PS:用的工具是VS2005,程序最后要在Window CE 运行.

解决方案 »

  1.   

    微软早就不推荐用ini了,ini属于16位系统遗留物
    32位系统都用注册表
    .net CF的话,用XML
    如果想用Windows Native API的话,应该用RegOpenKeyEx, RegSetValueEx, RegQueryValueEx
      

  2.   

    ............XML不会用
    是改用注册表吗 ???,也不知道Window CE 注册表是怎么用的,先看看。谢谢了
      

  3.   

    System.XMLX下有XML文件读写的方法
      

  4.   

    to 也不知道Window CE 注册表是怎么用的参看
    http://blog.csdn.net/Knight94/archive/2006/03/28/640776.aspx
      

  5.   

    查看MSDN得到的这个API需求环境Client Requires:
    Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95. 没有列出任何版本的WINDOWS CE,不支持。
      

  6.   

    其实如果你非要用ini配置文件,
    你可以自己实现一个读取配置文件的类,
    或者借鉴《NB文章系统》中的实现也是可以的。
      

  7.   

    把INI文件当做文本文件来读写搭配System.IO.StreamReader
    ///////////////////////////Code Start
    System.IO.StreamReader file = 
       new System.IO.StreamReader("c:\\test.txt");
    while((line = file.ReadLine()) != null)
    {
       Console.WriteLine (line);
       counter++;
    }file.Close();
    ///////////////////////////////Code End
      

  8.   

    using System;
    using System.IO;
    using System.Text;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Windows.Forms;namespace IniClass
    {
    /// <summary>
    /// IniClass 的摘要说明。
    /// </summary>
    public class IniClass
    {
    /// <summary>
    /// INI文件名
    /// </summary>
    //private string Path = Application.StartupPath + "\\Set.ini";

    /// <summary>
    /// 声明读写INI文件的API函数
    /// 说明
    /// 在初始化文件指定小节内设置一个字串
    /// 返回值
    /// Long,非零表示成功,零表示失败。
    /// </summary>
    /// 参数表
    /// <param name="section" type="string">要在其中写入新字串的节点名称。</param>
    /// <param name="key" type="string">要设置的项目名称。</param>
    /// <param name="val" type="string">要设置的项目名称的值。</param>
    /// <param name="filePath" type="string">ini文件所在的完整路径。</param>
    [DllImport("kernel32")]
    private static extern bool WritePrivateProfileString(string section,string key,string val,string filePath);
    //private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
    /// <summary>
    /// 说明
    /// 为初始化文件中指定的条目取得字串
    /// 返回值
    /// long,复制到 retVal 缓冲区的字节数量,其中不包括那些NULL中止字符。如 retVal 缓冲区不够大,
    /// 不能容下全部信息,就返回nSize-1(若 section 或 key 为NULL,则返回 size-2)
    /// </summary>
    /// 参数表
    /// <param name="section" type="string">欲在其中查找条目的小节名称。这个字串不区分大小写。如设为 Null,就在 retVal 缓冲区内装载这个ini文件所有小节的列表</param>
    /// <param name="key" type="string">欲获取的项名或条目名。这个字串不区分大小写。如设为 Null,就在 retVal 缓冲区内装载指定小节所有项的列表</param>
    /// <param name="def" type="string">指定的条目没有找到时返回的默认值。可设为空("")</param>
    /// <param name="retVal" type="byte[]">指定一个字串缓冲区,长度至少为 size</param>
    /// <param name="size" type="long">指定装载到 retVal 缓冲区的最大字符数量</param>
    /// <param name="filePath" type="string">初始化文件的名字。如没有指定一个完整路径名,windows就在Windows目录中查找文件</param>
    /// 注解
    /// 如 key 参数为 Null,那么 retVal 缓冲区会载入指定小节所有设置项的一个列表。每个项都用一个NULL字符分隔,最后一个项用两个NULL字符中止。
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section,string key,string def, byte[] retVal,int size,string filePath);
    //private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);  
    /* 写入ini文件(字符串)(String) */
    public bool IniWriteValue(string Section,string Key,string Value,string Path)
    {
    return WritePrivateProfileString(Section,Key,Value,Path);
    } /* 写入ini文件(整型)(int) */
    public bool IniWriteValue(string Section,string Key,int Value,string Path)
    {
    return IniWriteValue(Section,Key,Value.ToString(),Path);
    }

    /* 写入ini文件(浮点型)(float) */
    public bool IniWriteValue(string Section,string Key,float Value,string Path)
    {
    return IniWriteValue(Section,Key,Value.ToString(),Path);
    } /* 写入ini文件(布尔型)(bool) */
    public bool IniWriteValue(string Section,string Key,bool Value,string Path)
    {
    return IniWriteValue(Section,Key,Value.ToString(),Path);
    } /* 读取INI文件(字符串)(String) */
    public string IniReadValue(string Section,string Key,string Default,string Path)
    {
    Byte[] Buffer = new Byte[65535];
    int bufferLen = GetPrivateProfileString(Section,Key,Default,Buffer,Buffer.GetUpperBound(0),Path);
    string temp = Encoding.GetEncoding(0).GetString(Buffer);
    temp = temp.Substring(0,bufferLen);
    return temp.Trim();
    } /* 读取INI文件(整型)(int) */
    public int IniReadValue(string Section,string Key,int Default,string Path)
    {
    try
    {
    return Convert.ToInt32(IniReadValue(Section,Key,Default.ToString(),Path));
    }
    catch
    {
    return Default;
    }
    } /* 读取INI文件(浮点型)(float) */
    public float IniReadValue(string Section,string Key,float Default,string Path)
    {
    try
    {
    return Convert.ToSingle(IniReadValue(Section,Key,Default.ToString(),Path));
    }
    catch
    {
    return Default;
    }
    } /* 读取INI文件(布尔型)(bool) */
    public bool IniReadValue(string Section,string Key,bool Default,string Path)
    {
    try
    {
    return Convert.ToBoolean(IniReadValue(Section,Key,Default.ToString(),Path));
    }
    catch
    {
    return Default;
    }
    }
    }
    }
    //调用
    private void button2_Click(object sender, System.EventArgs e)
    {
    string path = Application.StartupPath + "\\Set.ini";
    IniClass ini = new IniClass();
    textBox4.Text = ini.IniReadValue(textBox1.Text,textBox2.Text,"没找到",path);
    } private void button1_Click(object sender, System.EventArgs e)
    {
    string path = Application.StartupPath + "\\Set.ini";
    IniClass ini = new IniClass();
    ini.IniWriteValue(textBox1.Text,textBox2.Text,textBox3.Text,path);
    }
      

  9.   

    用Configuration.AppSettings,参见MSDN中Configuration 成员
      

  10.   

    到codeproject.com搜一下,里面好多不用api的操作ini的类
      

  11.   

    string iniFile = "iniFile.ini";
    iniFile = System.Configuration.ConfigurationSettings.AppSettings["IniFile "];