md5小工具

来源:互联网 发布:算法导论哪些可以不看 编辑:程序博客网 时间:2024/05/21 10:33
/**************************************************************************************** AUTHOR : L0g1n* DATE   : 2013-12-23* MODULE : md5ToClipboard* * MD5计算工具* 双击运行程序后会自动拷贝文件到系统目录下、添加鼠标右键菜单、原文件自删除。* 使用方法:* 在需要计算的文件上右键选择md5--->Clipboard,然后MD5就被存放到剪贴版中了。* * 开发原因:* 1、由于经常使用MD5计算工具,计算完成后多数操作为复制到文档中,太过麻烦。* 2、代码积累,该程序中所使用到的技术:自动请求Admin权限、注册表操作、自删除、剪贴板、鼠标右键添加等* * 本程序特点:* 无色无味无残留无界面* * xp与Win8测试通过。* 在xp下可能需要安装vs2010的运行库:Microsoft Visual C++ 2010* * 如有问题:请联系:l0g1n@qq.com***************************************************************************************** Copyright (C) 2013 L0g1n.****************************************************************************************/#include "md5.h"#include <shlobj.h>#include <atlconv.h>#pragma comment(lib, "shell32.lib")//提升权限BOOL RunElevated(LPCSTR pszPath)  {  SHELLEXECUTEINFOA shex;  memset( &shex, 0, sizeof( shex) );  shex.cbSize        = sizeof( SHELLEXECUTEINFOA );  shex.fMask        = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;  shex.hwnd        = NULL;  shex.lpVerb        = ("runas");  shex.lpFile        = pszPath;  shex.lpDirectory    = NULL;shex.nShow        = SW_NORMAL;  return ::ShellExecuteExA( &shex ); }int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdShow, int nShow){//获取参数LPWSTR *szArgList;int argCount;szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);if(argCount == 2){USES_CONVERSION;char md5[40] = {0};strcpy(md5, MD5File(W2A(szArgList[1])));for(int i = 0; i < 32; i++){md5[i] = toupper(md5[i]);}//剪贴版操作if(OpenClipboard(NULL)){EmptyClipboard();HANDLE hClip = GlobalAlloc(GMEM_MOVEABLE, 40);char* pBuf = (char *)GlobalLock(hClip);strcpy(pBuf, md5);GlobalUnlock(hClip);SetClipboardData(CF_TEXT, hClip);CloseClipboard();}LocalFree(szArgList);}else{//该部分为第一次运行时的安装HKEY hKey;HKEY hSubKey;char szSource[MAX_PATH] = {0};char szDst[MAX_PATH] = {0};//文件拷贝GetModuleFileNameA(NULL, szSource, MAX_PATH);//请求UAC权限if(!IsUserAnAdmin()){RunElevated(szSource);}else{SHGetSpecialFolderPathA(NULL,szDst, CSIDL_PROGRAM_FILES, FALSE);lstrcatA(szDst, "\\md5ToClipboard.exe");if(!CopyFileA(szSource, szDst, FALSE)){MessageBoxA(NULL,"Copy Failed","Error",MB_OK);return -1;}char data[MAX_PATH] = {0};strcpy(data, szDst);lstrcatA(data, " %1");//注册表部分操作if(ERROR_SUCCESS == RegOpenKeyExA(HKEY_CLASSES_ROOT, "*", 0, KEY_SET_VALUE, &hKey)){if(ERROR_SUCCESS == RegCreateKeyA(hKey, "shell\\md5--->Clipboard\\command", &hSubKey)){if(ERROR_SUCCESS != RegSetValueExA(hSubKey, NULL, 0, REG_SZ, (BYTE *)data, strlen(data))){MessageBoxA(NULL,"Reg Set Failed","Error",MB_ICONERROR);}}else{MessageBoxA(NULL, "Create Sub Key Failed", "Error", MB_ICONERROR);}}else{MessageBoxA(NULL, "shell Sub Key is not Exist", "Error", MB_ICONERROR);}RegCloseKey(hKey);RegCloseKey(hSubKey);//文件自删除char szDel[MAX_PATH] = {0};wsprintfA(szDel, "cmd.exe /c ping -n 5 127.0.0.1 && del \"%s\"", szSource);WinExec(szDel, SW_HIDE);}}return 0;}


代码下载地址:

http://download.csdn.net/detail/l0g1n/6760731

0 0
原创粉丝点击