文件写入/阅读无效

时间:2015-10-09 17:03:46

标签: c++ windows

我最近采用了一种注入流程的新方法,除了配置读取/文件读取外,一切正常。这是我目前使用的代码:

string ReadIniKey(string section, string key){
    string iniPath = GetDocuments()/*This returns the correct value)*/ + "My Program\\Config.ini";
    if (!ifstream(iniPath)){ ofstream file(iniPath); WriteINIDefaults(); }
    char retVal[255];
    GetPrivateProfileString((LPCWSTR)section.c_str(), (LPCWSTR)key.c_str(), (LPCWSTR)"", (LPWSTR)retVal, 255, (LPCWSTR)iniPath.c_str());
    return retVal;
}
void WriteIni(string section, string key, string value){
    string iniPath = GetDocuments()/*This returns the correct value)*/ + "My Program\\Config.ini";
    if (!ifstream(iniPath)) ofstream file(iniPath);
    WritePrivateProfileString((LPCWSTR)section.c_str(), (LPCWSTR)key.c_str(), (LPCWSTR)value.c_str(), (LPCWSTR)iniPath.c_str());
}

它不是在读取文件,创建文件或向现有文件写入任何内容。我注入了64位进程,有可能修复吗?我主要担心的是GetPrivateProfileString / WritePrivateProfileString部分。

编辑:在发布模式下编译会创建文件,但GetPrivateProfileString / WritePrivateProfileString不对文件执行任何操作

2 个答案:

答案 0 :(得分:0)

构造函数ifstream()不接受C ++ string。它需要const char* C类型char/string。但是,如果您使用的是C++11,那么在string构造函数中使用ifstream()时,使用ifstream(iniPath)应该不会有问题。

因此,将ifstream(iniPath.c_str())更改为ethier C或使用print u"{}: {}".format(code,eval(expression)) ^ 样式字符串。

答案 1 :(得分:0)

我使用GetPrivateProfileStringA& amp; WritePrivateProfileStringA而不是GetPrivateProfileString& WritePrivateProfileString

  

File Writing / Reading is not working