我有一个用于Windows CE 5的Visual Studio 2008 C ++项目,我希望当前运行的可执行文件能够自行修改。
具体来说,我希望能够读取/写入exe文件本身存储的一些数据。我不需要(或希望)修改可执行代码。
在常规窗口中,我可以使用字符串资源和UpdateResource函数,但在WinCE中不存在。
遗憾的是,CreateFile因文件已被使用而失败。
有人有任何其他建议吗?
答案 0 :(得分:1)
首先,你为什么需要这样做?您应该可以使用其他方法执行此操作。
我对Windows-CE并不是特别熟悉,但如果需要,您可以复制文件,编辑副本,删除第一个,然后运行另一个。这是一种效率低下的方法,但如果你只需要在程序范围内做一两次,速度就不是问题了,我想你可以这样做:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char * argv[]) {
// Check if this IS the copy:
if (argv[0].find(argv[1]) != string::npos) {
system("taskkill -IM myOLDfile.exe"); // Stop the old one running,
system("del myOLDfile.exe"); // Then delete it.
}
ifstream myself(argv[0]); // argv[0] is the program itself
string fullcode;
string line;
if (file.is_open()) {
while (file.good()) {
getline(myself, line);
line.append("\n");
fullcode.append(line);
}
}
myself.close();
// Do whatever you need to do to the code here.
ofstream newcode("myNEWfile.exe");
newcode.write(fullcode);
newcode.close();
system("myNEWfile.exe myNEWfile.exe"); // Starts new file. Also, not a typo.
}
祝你的项目好运!