您的位置:首页 > 编程语言 > C语言/C++

autocad2008 注册信息备份恢复

2013-09-05 16:08 141 查看
autocad2008注册过以后有时候会出现要求重新注册的情况,而且出现之后反复注册都不成功,

这个时候把注册信息文件删除掉,再重新注册就可以了,也可以注册好了以后先把注册信息文件备份下来,一旦出现要求重新注册的情况就覆盖回去。

好长时间不写代码了,练练手

// ACADTest.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <windows.h>

#include   <shlobj.h>   

#pragma   comment(lib,   "shell32.lib") 

BOOL BackUp(_TCHAR * OrgFileName)

{
_TCHAR drv[MAX_PATH],dir[MAX_PATH],FileName[MAX_PATH],Ext[MAX_PATH];
_tsplitpath(OrgFileName,drv,dir,FileName,Ext);
_TCHAR dstFileName[MAX_PATH]={0};
_tcscpy(dstFileName,_T("c:\\acadbackup\\"));
_tcscat(dstFileName,FileName);
_tcscat(dstFileName,Ext);
return CopyFile(OrgFileName,dstFileName,FALSE);

}

BOOL Reverse(_TCHAR *backFileName,_TCHAR *OrgFilePath)

{
_TCHAR drv[MAX_PATH],dir[MAX_PATH],FileName[MAX_PATH],Ext[MAX_PATH];
_tsplitpath(backFileName,drv,dir,FileName,Ext);
_TCHAR dstFileName[MAX_PATH]={0};
_tcscpy(dstFileName,OrgFilePath);
_tcscat(dstFileName,FileName);
_tcscat(dstFileName,Ext);
return CopyFile(backFileName,dstFileName,FALSE);

}

BOOL ReverseAcadLicense(_TCHAR *backupedFileName)

{
TCHAR   szPath[MAX_PATH]={0};
SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_APPDATA,FALSE);

_tcscat(szPath,_T("\\autodesk\\software licenses\\"));
return Reverse(backupedFileName,szPath);

}

BOOL FindLicenseFile(_TCHAR * licenseFile)

{
TCHAR   szPath[MAX_PATH]={0};
TCHAR   szPathMatch[MAX_PATH]={0};
TCHAR   szRealFile[MAX_PATH]={0};
SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_APPDATA,FALSE);

_tcscat(szPath,_T("\\autodesk\\software licenses\\"));
_tcscpy(szPathMatch,szPath);
_tcscat(szPathMatch,_T("*.dat"));
WIN32_FIND_DATA fa;
HANDLE hd=FindFirstFile(szPathMatch,&fa);
if(INVALID_HANDLE_VALUE==hd)
return FALSE;
do 
{
_tcscpy(szRealFile,szPath);
_tcscat(szRealFile,_T("\\"));
_tcscat(szRealFile,fa.cFileName);
//_tprintf(_T("%s"),szRealFile);
_tcscpy(licenseFile,szRealFile);
} while (FindNextFile(hd,&fa));
return FindClose(hd);

}

BOOL FindBackUpFile(_TCHAR * backupFile)

{
TCHAR   szPath[MAX_PATH]={0};
TCHAR   szPathMatch[MAX_PATH]={0};
TCHAR   szRealFile[MAX_PATH]={0};
_tcscpy(szPath,_T("c:\\acadbackup\\"));
_tcscpy(szPathMatch,szPath);
_tcscat(szPathMatch,_T("*.dat"));
WIN32_FIND_DATA fa;
HANDLE hd=FindFirstFile(szPathMatch,&fa);
if(INVALID_HANDLE_VALUE==hd)
return FALSE;
do 
{
_tcscpy(szRealFile,szPath);
_tcscat(szRealFile,_T("\\"));
_tcscat(szRealFile,fa.cFileName);
//_tprintf(_T("%s"),szRealFile);
_tcscpy(backupFile,szRealFile);
} while (FindNextFile(hd,&fa));
return FindClose(hd);

}

void useage()

{
_tprintf(_T("autocad 2008 license file backup/recovery tool:\r\n"));
_tprintf(_T("try ACADTest.exe -b or ACADTest.exe /b to backup license file\r\n"));
_tprintf(_T("try ACADTest.exe -r or ACADTest.exe /r to recovery license file\r\n"));

}

int _tmain(int argc, _TCHAR* argv[])

{
bool backup=false;
if(argc==2)
{
if((_tcsicmp(argv[1],_T("/b"))==0)||_tcsicmp(argv[1],_T("-b"))==0)
{
backup=true;
}
if((_tcsicmp(argv[1],_T("/r"))==0)||_tcsicmp(argv[1],_T("-r"))==0)
{
backup=false;
}
}
else
{
useage();
system("pause");
return -1;
}

TCHAR   szLicenseFileName[MAX_PATH]={0};
TCHAR   szBackupFileName[MAX_PATH]={0};

if(backup)
{
CreateDirectory(_T("c:\\acadbackup\\"),NULL);
if(FindLicenseFile(szLicenseFileName))
{
if(FindBackUpFile(szBackupFileName))
{
TCHAR userinput[10]={0};
_tprintf(_T("backup file already exist,are you sure to cover it?please input y(yes)/n(no) \r\n"));
int count=_tscanf(_T("%s"),&userinput);
if((_tcsicmp(userinput,_T("y"))==0)||_tcsicmp(userinput,_T("yes"))==0)
{
DWORD attr=GetFileAttributes(szBackupFileName);
SetFileAttributes(szBackupFileName,attr&~FILE_ATTRIBUTE_READONLY);
DeleteFile(szBackupFileName);
if(BackUp(szLicenseFileName))
{
_tprintf(_T("backup license file success!"));
}
}
else if((_tcsicmp(userinput,_T("n"))==0)||_tcsicmp(userinput,_T("no"))==0)
{
_tprintf(_T("user interrupt\r\n"));
}
else
{
_tprintf(_T("input incorrect\r\n"));
}
}
}
}
else
{
if(FindBackUpFile(szBackupFileName))
{
if(FindLicenseFile(szLicenseFileName))
{
TCHAR userinput[10]={0};
_tprintf(_T("license file already exist,are you sure to cover it?please input y(yes)/n(no) \r\n"));
int count=_tscanf(_T("%s"),&userinput);
if((_tcsicmp(userinput,_T("y"))==0)||_tcsicmp(userinput,_T("yes"))==0)
{
DWORD attr=GetFileAttributes(szLicenseFileName);
SetFileAttributes(szLicenseFileName,attr&~FILE_ATTRIBUTE_READONLY);
DeleteFile(szLicenseFileName);
if(ReverseAcadLicense(szBackupFileName))
{
_tprintf(_T("recovery license file success!"));
}
}
else if((_tcsicmp(userinput,_T("n"))==0)||_tcsicmp(userinput,_T("no"))==0)
{
_tprintf(_T("user interrupt\r\n"));
}
else
{
_tprintf(_T("input incorrect\r\n"));
}
}
}
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++