Autorun.inf文件(2):改变硬盘分区图标

改变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 }

 

posted @ 2016-01-01 04:22  廖凡  阅读(2023)  评论(0编辑  收藏  举报