调用WritePrivateProfileString时,最后一个参数不是路径,而是比如说AAA之类,
那么它到底把值写到哪里去了,我到注册表下
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping 
没找到,也没有生成相应ini文件.

解决方案 »

  1.   

    最后一个是文件名(完整路径),如D:\test\1.ini,一般是获得应用程序路径(path+\\1.ini)
      

  2.   

    所用的WINAPI函数原型为:
      BOOL WritePrivateProfileString(
      LPCTSTR lpAppName,
      LPCTSTR lpKeyName,
      LPCTSTR lpString,
      LPCTSTR lpFileName
      );
      其中各参数的意义
      LPCTSTR lpAppName 是INI文件中的一个字段名.
      LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
      LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
      LPCTSTR lpFileName 是完整的INI文件名.
      

  3.   

    在%SystemRoot%里(通常为C:\WINDOWS)如果最后一个参数为"AAA",则在%SystemRoot%里生成一个AAA的文件
    如果最后一个参数为NULL,则写到%SystemRoot%\win.ini里
      

  4.   

    http://blog.csdn.net/wuguai4/article/details/7287346
      

  5.   

    If the lpFileName parameter does not contain a full path and filename for the file, WritePrivateProfileString searches the Windows directory for the file. If the file does not exist, this function creates the file in the Windows directory
      

  6.   

    生成的AAA文件在你所运行程序的目录内
      

  7.   

    楼主问的是最后一个参数不是路径的情况
    如果最后一个参数为TEXT(".\\AAA"),生成的AAA文件才是在当前工作目录下
      

  8.   

    如果是程序的所在目录下的ini,必须用完整路径
    先用GetModuleFileName获取程序的路径,再截取程序所在目录,然后将程序所在目录和ini文件名连接起来得到完整路径
      

  9.   

    最后一个参数不是绝对路径,而是应用程序的名称.
    但是程序启动时候用SetRegistryKey(程序名称)设置了下.另外在%SystemRoot%里也没找到相应的ini啊
      

  10.   


    WritePrivateProfileString是API函数,不是CWinApp的成员函数,所以不受SetRegistryKey的影响
    你检查清楚,要加上扩展名.ini才是ini,否则只是AAA
      

  11.   

    没有扩展名.ini,就直接是应用程序名称
    WritePrivateProfileString(x,x,x,ExeName);这样
    ExeName是应用程序名称(比如AAA),不是绝对路径.不是相对路径,这个已经相当清楚了.反正我愣是没找到他写在哪里,注册表里,没有,
    在C盘我搜索了AAA.ini,也没有,那还有哪里?
      

  12.   

    在App:  InitInstance中看看:
    afxDump << m_pszProfileName << "\n";
    就知道了
      

  13.   


    ExeName是AAA的话,你应该搜索AAA,而不是AAA.ini
      

  14.   

    m_pszProfileName就是AAA
    搜索AAA也没有.
      

  15.   

    WritePrivateProfileString (TEXT("Section1"), 
    TEXT("SecondKey"), 
    TEXT("By golly, it works!"), 
    TEXT("E:\\11.ini")); 
      

  16.   

    都说WritePrivateProfileString只是个API函数了,m_pszProfileName是什么根本没关系WritePrivateProfileString(TEXT("section"), TEXT("key"), TEXT("string"), TEXT("AAA.ini"));
    此代码就能在%windir%里生成一个AAA.ini了;如果没有,检查此函数的返回值看看是否失败了
    你可以用SDK的方式写个程序测试下
      

  17.   

    谢谢gfm688,
    在%windir%我终于找到了AAA.
    之前查找错了名字,囧.
    非常感谢.