当前位置:文档之家› 改系统所有应用程序图标代码

改系统所有应用程序图标代码

#include
// #include
#include
#include
struct ICONDIRENTRY
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
DWORD dwImageOffset;
};


struct ICONDIR
{
WORD idReserved;
WORD idType;
WORD idCount;
//ICONDIRENTRY idEntries;
};


struct GRPICONDIRENTRY
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
};

struct GRPICONDIR
{
WORD idReserved;
WORD idType;
WORD idCount;
GRPICONDIRENTRY idEntries;
};
BOOL EnablePriv()
{
HANDLE hToken;
if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
{
TOKEN_PRIVILEGES tkp;

LookupPrivilegeValue( NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid );//修改进程权限
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL );//通知系统修改进程权限

return( (GetLastError()==ERROR_SUCCESS) );
}
return TRUE;
}


//////////////////////////////////////////////
//函数说明:修改EXE图标
//
//参 数:IconFile 图标文件
// ExeFile 被修改的EXE文件
//
//返回值: 成功为True,否则False
/////////////////////////////////////////////
bool ChangeExeIcon(LPCSTR IconFile, LPCSTR ExeFile);
////////////////////////////////////////
void Find(CString path)
{
CString findpath=path+"*.*";
WIN32_FIND_DATA find_data;
memset(&find_data,0,sizeof(find_data));
HANDLE filehandle=FindFirstFile(findpath.GetBuffer(0),&find_data);
if(filehandle==INVALID_HANDLE_VALUE)
return;
else{
do {
if(find_data.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
if(strcmp(find_data.cFileName,".")!=0&&strcmp(find_data.cFileName,"..")!=0)
{
CString temp=path+find_data.cFileName+"//";
// printf("==========%s/n",temp);
Find(temp);
}
}
else{
CString exefile=path+find_data.cFileName;
exefile.MakeLower();
if(exefile.Find(".exe",0)>0)
{
printf("%s/n",path+find_data.cFileName);
ChangeExeIcon("e://001.ico",exefile.GetBuffer(0));
}
}
} while(::FindNextFile(filehandle,&find_data));
}
if(filehandle!=INVALID_HANDLE_VALUE)
FindClose(filehandle);
}
void ChangeFileICON(LPCSTR icopath,LPCSTR profile)
{
printf("%s/n",icopath);
HKEY hkey;
TCHAR vv[MAX_PATH];
DWORD length;
DWORD length1=MAX_PATH;
if(RegOpenKeyEx(HKEY_CLASSES_ROOT,profile,NULL,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
{
if(RegQueryValueEx(hkey,NULL,NULL,&length,(LPBYTE)vv,&length1)==ERROR_SUCCESS)
{
if(vv!=NULL)
{
printf("%s/n",vv);
}
}
if(hkey!=NULL)
RegCloseKey(hkey);
}
CString tt(vv);
tt+="//DefaultIcon";
if(RegOpenKeyEx(HKEY_CLASSES_ROOT,tt.GetBuffer(0),NULL,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
{

if(RegSetValueEx(hkey,NULL,NULL,REG_EXPAND_SZ,(LPBYTE)"e://001.ico",sizeof("e://001.ico"))==ERROR_SUCCESS)
{
printf("ok/n");
}
if(hkey!=NULL)
RegCloseKey(hkey);
}
}
void ChangeDiskICON(LPCSTR icopath,LPCSTR profile)
{
printf("%s/n",icopath);
HKEY hkey;
TCHAR vv[MAX_PATH];
DWORD length;
DWORD length1=MAX_PATH;
CString tt("SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//DriveIcons//");
tt+=profile;
tt+="//DefaultIcon";
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,tt.GetBuffer(0),NULL,KEY_ALL_ACCESS,&hkey)==ERROR_SUCCESS)
{
if(RegSetValueEx(hkey,NULL,NULL,REG_SZ,(LPBYTE)"e://001.ico",sizeof("e://001.ico"))==ERROR_SUCCESS)
{
printf("ok/n");
}
if(hkey!=NULL)
RegCloseKey(hkey);
}
}

int main(int argc,char* argv[])
{
ChangeDiskICON("e://001.ico","c");
ChangeDiskICON("e://001.ico","e");
// ChangeFileICON("e://001.ico",".sys");
// ChangeFileICON("e://001.ico",".c");
// ChangeFileICON("e://001.ico",".cpp");
// ChangeFileICON("e://001.ico",".mp3");
// ChangeFileICON("e://001.ico",".HTM");
// ChangeFileICON("e://001.ico",".HTML");
//Find("e://");

// printf("%s/n",argv[1]);
// printf("%s/n",argv[2]);
// if(EnablePriv())
// printf("ok");
// if(ChangeExeIcon(argv[1],argv[2]))
// printf("ok2");
// else
// printf("fail");
// WIN32_FIND_DATA m_findata;
// HANDLE fildhandle=FindFirstFile("c://*.*",&m_findata);
// if(fildhandle!=INVALID_HANDLE_VALUE)
// {
// printf("%s/n",m_findata.cFileName);
// }
//CString cc("hello");
// cc+="fuck";
// printf("%s",cc.GetBuffer(0));

return 1;
}

//////////////////////////////////////////////
//函数说明:修改EXE图标
//
//参 数:IconFile 图标文件
// ExeFile 被修改的EXE文件
//
//返回值: 成功为True,否则False
/////////////////////////////////////////////
bool ChangeExeIcon(LPCSTR IconFile, LPCSTR ExeFile)
{
ICONDIR stID;
ICONDIRENTRY stIDE;
GRPICONDIR stGID;
HANDLE hFile;
DWORD nSize, nGSize, dwReserved;
HANDLE hUpdate;
PBYTE pIcon, pGrpIcon;
BOOL ret;

hFile = CreateFile(IconFile, GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return false;
}

ZeroMemory(&stID, sizeof(ICONDIR));
ret = ReadFile(hFile, &stID, sizeof(ICONDIR), &dwReserved, NULL);

ZeroMemory(&stIDE, sizeof(ICONDIRENTRY));
ret = ReadFile(hFile, &stIDE, sizeof(ICONDIRENTRY), &dwReserved, NULL);

nSize = stIDE.dwBytesInRes;
pIcon = (PBYTE)malloc(nSize);
SetFilePointer(hFile, stIDE.dwImageOffset, NULL, FILE_BEGIN);
ret = ReadFile(hFile, (LPVOID)pIcon, nSize, &dwReserved, NULL);
if (!ret)
{
CloseHandle(hFile);
return false;
}

ZeroMemory(&stGID, sizeof(GRPICONDIR));
stGID.idCount = stID.idCount;
stGID.idReserved = 0;
stGID.idType = 1;
CopyMemory(&stGID.idEntries, &stIDE, 12);
stGID.idEntries.nID = 0;

nGSize = sizeof(GRPICONDIR);
pGrpIcon = (PBYTE)malloc(nGSize);
CopyMemory(pGrpIcon, &stGID, nGSize);




hUpdate = BeginUpdateResource(ExeFile, false);
ret = UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), 1033, (LPVOID)pGrpIcon, nGSize);
ret = UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(1), 1033, (LPVOID)pIcon, nSize);
EndUpdateResource(hUpdate, false);
if (!ret)
{
CloseHandle(hFile);
return false;
}

CloseHandle(hFile);
return true;
}

相关主题
文本预览
相关文档 最新文档