标签:
改变F盘图标。
原理:在f盘下新建一个Autorun.inf文件,文件内容是
[AutoRun]
icon=favicon.ico
准备名为favicon.ico图标文件,将其放在工程目录里,设计程序将它移动到f盘下
令计算机重启使Atuorun.inf生效。
完整程序如下:
1 #include<windows.h> 2 #include <tchar.h> 3 #include<stdio.h> 4 5 int main() 6 { 7 //复制favicon.ico到F盘 8 //获得不包含文件名的程序自身路径 9 char szPath[MAX_PATH + 1]={0}; 10 GetModuleFileName(NULL, szPath, MAX_PATH); 11 int i,pos; 12 //得到Dubeg上一级目录 13 for (i=0;i<MAX_PATH;i++) 14 { 15 //姑且这么写吧 16 if (szPath[i]==‘D‘&&szPath[i+1]==‘e‘&&szPath[i+2]==‘b‘&&szPath[i+3]==‘u‘&&szPath[i+4]==‘g‘) 17 { 18 pos = i-1; 19 } 20 } 21 szPath[pos]=‘\0‘; 22 char iconPath[256]; 23 sprintf(iconPath,"%s\\favicon.ico",szPath); 24 printf("%s",iconPath); 25 26 CopyFile(iconPath,"F:\\favicon.ico",1); 27 28 //在F盘下写Autorun文件 29 30 FILE *fp; 31 char strFileName[256]="F:\\Autorun.inf"; 32 fp=fopen(strFileName,"w+"); 33 34 fprintf(fp,"[AutoRun]\n"); 35 fprintf(fp,"icon=favicon.ico\n"); 36 37 fclose(fp); 38 39 //重启计算机使Autorun.inf生效 40 HANDLE hToken; 41 TOKEN_PRIVILEGES tkp; 42 43 OSVERSIONINFO osvi; 44 osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); 45 if(GetVersionEx(&osvi)==0) 46 return false; 47 48 if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT) 49 { 50 if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) 51 return false; 52 LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); 53 tkp.PrivilegeCount=1; 54 tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; 55 56 AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); 57 } 58 59 ExitWindowsEx(EWX_REBOOT,0); 60 61 return 0; 62 }
标签:
原文地址:http://www.cnblogs.com/lanf/p/5092944.html