调用strcpy时此代码崩溃。我在代码的许多地方使用这种方式来创建路径。但是这个代码总是在一个特定的函数中失败。这段代码有什么问题。
char updaterPath[1024];
if(GetModuleFileName(NULL, updaterPath, 1024)==0)
{
return 0;
}
char * temp=strrchr(updaterPath,'\\');
strcpy(temp,"\\ru.exe");
答案 0 :(得分:0)
我找到了解决方案。但它是蹩脚的,没有意义。我原来的代码是这样的
char updaterPath[1024];
if(GetModuleFileName(NULL, updaterPath, 1024)==0)
{
return 0;
}
if(RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\ddddd",0,NULL,0,KEY_ALL_ACCESS,NULL,&hKey,NULL)==ERROR_SUCCESS)
{
long res1=RegQueryValueEx(hKey,"version", NULL, NULL, (LPBYTE)regVersion, ®VersionLen);
if(res1==ERROR_FILE_NOT_FOUND||strcmp(regVersion,AutoVersion::FULLVERSION_STRING)) //check for version mismatch and go in
{
char * temp = strrchr(updaterPath,'\\');
strcpy(temp+1,"Downloads\\ru.exe");
我把它改成了这个,现在工作正常
char updaterPath[1024];
if(RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\ddddd",0,NULL,0,KEY_ALL_ACCESS,NULL,&hKey,NULL)==ERROR_SUCCESS)
{
long res1=RegQueryValueEx(hKey,"version", NULL, NULL, (LPBYTE)regVersion, ®VersionLen);
if(res1==ERROR_FILE_NOT_FOUND||strcmp(regVersion,AutoVersion::FULLVERSION_STRING)) //check for version mismatch and go in
{
if(GetModuleFileName(NULL, updaterPath, 1024)==0)
{
return 0;
}
char * temp = strrchr(updaterPath,'\\');
strcpy(temp+1,"Downloads\\ru.exe");