1 #include <iostream>
2 #include <string>
3 #include <windows.h>
4
5 using namespace std;
6
7 int main(int argc, char *argv[])
8 {
9 if(argc != 3) // 判断参数个数,若小于 3 则输出提示
10 {
11 printf("\t\t**************************************\n");
12 printf("\t\t\tSetDirIcon By Hoy0a1d.\n");
13 printf("\t\t\tUsage:%s DirPath IconPath\n", argv[0]);
14 printf("\t\t**************************************\n");
15 }
16 else
17 {
18 // 判断需要设置的文件夹是否存在
19 if(GetFileAttributes(argv[1]) != INVALID_FILE_ATTRIBUTES)
20 {
21 // 判断 ico 文件是否存在
22 if(GetFileAttributes(argv[2]) != INVALID_FILE_ATTRIBUTES)
23 {
24 char iniPath[MAX_PATH] = "";
25 char icoPath[MAX_PATH] = "";
26 // 在需要设置的文件夹下新建 desktop.ini
27 strcat(iniPath, argv[1]);
28 strcat(iniPath, "\\desktop.ini");
29 // 将 ico 文件复制到文件夹下命名为 icon.ico
30 strcat(icoPath, argv[1]);
31 strcat(icoPath, "\\icon.ico");
32 // 复制文件,覆盖已有
33 CopyFile(argv[2], icoPath, FALSE);
34 // 设置 icon.ico 文件属性为隐藏
35 SetFileAttributes(icoPath, FILE_ATTRIBUTE_HIDDEN);
36 /* BOOL WritePrivateProfileString(
37 LPCTSTR lpAppName, // INI文件中的一个字段名[节名]
38 LPCTSTR lpKeyName, // lpAppName 下的一个键名
39 LPCTSTR lpString, // 键值
40 LPCTSTR lpFileName // INI文件的路径
41 ); */
42 if(WritePrivateProfileString(".ShellClassInfo", "IconResource", "icon.ico", iniPath) == true)
43 {
44 // 设置 desktop.ini 文件属性为系统+隐藏
45 SetFileAttributes(iniPath, FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN);
46 printf("Folder icon setting success!\n");
47 }
48 else
49 printf("Folder icon setting failed!\n");
50 }
51 else
52 printf("ICO files do not exist.\n");
53 }
54 else
55 printf("Folders do not exist.\n");
56 }
57 return 0;
58 }