如题
c++ 获取自身文件名并设置固定的文件名,如果修改文件名再运行就直接关闭进程
想要特定文件名才能运行否则就直接关闭自身进程
要安卓可以运行的
int main(int argc,char **argv)
{
if (strcmp(argv[0],"固定的文件名.exe")) exit(1);
//...
}
获取运行的exe文件名,与你想设置的文件名做对比,如果不相同则直接退出主进程就可以了啊。获取本运行exe文件名的方法,对于main函数int main(int argc, char *argv[]),其中的argv存储运行的exe的命令行参数,其中第一个就是运行的exe的全路径文件名argv[0]就是你要的参数,直接取得和你想设置的文件名比对,不一样直接return 0就好了。一辈子请采纳谢谢!
上面写的没有问题。题主后追.exe去掉就直接可以在linux使用
if(std::string(argv[0]).find("文件名") == -1) exit(1);
在main函数下就这一句而已。
是想让一个文件修改为固定文件名,不允许修改为其他文件名?
运行效果及代码如下:
#include <iostream>
#include <Windows.h>
#include <cstring>
using namespace std;
int main()
{
char szFileFullPath[MAX_PATH], szProcessName[MAX_PATH];
GetModuleFileNameA(NULL, szFileFullPath, MAX_PATH);//获取文件路径
int length = strlen(szFileFullPath);
for (int i = length - 1; i >= 0; i--)//从路径后面开始找\,即倒着找右斜杠
{
if (szFileFullPath[i] == '\\')//找到第一个\,就可以马上获取进程名称了
{
i++;
for (int j = 0; i <= length; j++)//结束符\0不能少,即i=length
{
szProcessName[j] = szFileFullPath[i++];
}
break;
}
}
cout << "当前可执行程序文件名:" << szProcessName << endl; //输出当前可执行程序文件名
//跟固定的文件名比较
if (strcmp(szProcessName, "你的固定文件名.exe") != 0)
{
cout << "文件名被修改!!" << endl;
return 0;
}
return 0;
}