我最近采用了一种注入流程的新方法,除了配置读取/文件读取外,一切正常。这是我目前使用的代码:
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不对文件执行任何操作
答案 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