前段时间 Kakaru 总结了一下如何创建删除不掉的目录或者文件(原文请点击这里),老汉写了一个程序可以将之删除,今天整理硬盘的时候又发现了这个程序,留着吧,没什么大用,删了吧,有点可惜,放上来吧,说不定谁能用的着呢。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// rm.cpp : Defines the entry point for the console application. // #include <windows.h> #include <stdio.h> #pragma comment(linker, "/subsystem:console") int wmain(int argc, wchar_t* argv[]) { BOOL bFile = TRUE; BOOL bRet = FALSE; if(argc > 1) bFile = (lstrcmpiW(argv[1], L"-d") && lstrcmpiW(argv[1], L"/d")); if(argc < 2 || (!bFile && argc < 3)) { wprintf(L"Object not specified.\n"); wprintf(L"Syntax: %s [/d] <file or directory>.\n", argv[0]); return -1; } PWSTR pwszObj = bFile ? argv[1] : argv[2]; DWORD dwSize = GetCurrentDirectory(0, NULL); DWORD dwSize2 = dwSize + 50; dwSize2 += lstrlenW(pwszObj); wchar_t* pwsz = new wchar_t[dwSize2]; if(!pwsz) { wprintf(L"Out of memory.\n"); return -2; } memset(pwsz, 0, sizeof(WCHAR) * dwSize2); lstrcpyW(pwsz, L"\\\\?\\"); GetCurrentDirectoryW(dwSize, pwsz + 4); lstrcatW(pwsz, L"\\"); lstrcatW(pwsz, pwszObj); wprintf(L"Removing \"%s\"...\n", #ifdef _DEBUG pwsz #else pwszObj #endif ); bRet = bFile ? DeleteFileW(pwsz) : RemoveDirectoryW(pwsz); delete[] pwsz; wprintf(L"Remove the %s \"%s\" %s.\n", bFile ? L"file" : L"directory", pwszObj, bRet ? L"succeeded" : L"failed"); return bRet ? 0 : -3; } |