MSGID_VLNK_POINT_TO,\r
MSGID_VLNK_NO_DST,\r
MSGID_FILE_NAME_TOO_LONG,\r
+ MSGID_INVALID_SUFFIX,\r
\r
MSGID_BUTT\r
}MSGID;\r
L"´Ë vlnk ÎļþÖ¸Ïò ",\r
L"´Ë vlnk Ö¸ÏòµÄÎļþ²»´æÔÚ£¡",\r
L"Îļþ·¾¶Ì«³¤£¡",\r
+ L"·Ç·¨µÄvlnkÎļþºó׺Ãû!",\r
};\r
const WCHAR *g_msg_en[MSGID_BUTT] =\r
{\r
L"The vlnk file point to ",\r
L"The file pointed by the vlnk does NOT exist!",\r
L"The file full path is too long!",\r
+ L"Invalid vlnk file suffix!",\r
};\r
\r
const WCHAR **g_msg_lang = NULL;\r
return GetSaveFileName(&ofn);\r
}\r
\r
+static BOOL IsSupportedVlnkSuffix(WCHAR *FileName)\r
+{\r
+ int len;\r
+\r
+ len = lstrlen(FileName);\r
+\r
+ if (len > 9)\r
+ {\r
+ if (lstrcmp(FileName - 9, L".vlnk.iso") == 0 ||\r
+ lstrcmp(FileName - 9, L".vlnk.img") == 0 || \r
+ lstrcmp(FileName - 9, L".vlnk.wim") == 0 || \r
+ lstrcmp(FileName - 9, L".vlnk.vhd") == 0 || \r
+ lstrcmp(FileName - 9, L".vlnk.efi") == 0 || \r
+ lstrcmp(FileName - 9, L".vlnk.dat") == 0)\r
+ {\r
+ return TRUE;\r
+ }\r
+ }\r
+\r
+\r
+ if (len > 10)\r
+ {\r
+ if (lstrcmp(FileName - 10, L".vlnk.vhdx") == 0 ||\r
+ lstrcmp(FileName - 9, L".vlnk.vtoy") == 0)\r
+ {\r
+ return TRUE;\r
+ }\r
+ }\r
+\r
+ return FALSE;\r
+}\r
+\r
static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile)\r
{\r
int i;\r
wcscpy_s(szFile, MAX_PATH, DstFullPath);\r
if (VentoyGetSaveFileName(hWnd, szFile))\r
{\r
- wcscpy_s(DstFullPath, MAX_PATH, szFile);\r
- SetOutFile = TRUE;\r
+ if (IsSupportedVlnkSuffix(szFile))\r
+ {\r
+ wcscpy_s(DstFullPath, MAX_PATH, szFile);\r
+ SetOutFile = TRUE;\r
+ }\r
+ else\r
+ {\r
+ VtoyMessageBox(hWnd, g_msg_lang[MSGID_INVALID_SUFFIX], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR);\r
+ LogA("Invalid vlnk suffix\n");\r
+ goto end;\r
+ }\r
}\r
else\r
{\r
VtoyMessageBox(hWnd, g_msg_lang[MSGID_CREATE_FILE_ERR], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR);\r
}\r
\r
+ end:\r
free(Buf);\r
}\r
\r