#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <atlbase.h>
#include <Windows.h>
#include <atlstr.h>
#pragma warning(disable:4996)
using namespace std;
bool write_reg_sz(LPCTSTR SubKey, LPCTSTR Key, CString Value)
{
HKEY hkey;
HKEY hTempKey;
DWORD nLength = (Value.GetLength() + 1) * sizeof(TCHAR); // 定义数据长度
LPBYTE lpbName = new BYTE[nLength * sizeof(TCHAR)]; // 有可能是 Ansi 或 Unicode
memcpy(lpbName, (void*)(LPCTSTR)Value, (Value.GetLength() + 1) * sizeof(TCHAR));
LPCTSTR data_set = _T("");
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CLASSES_ROOT, data_set, 0, KEY_SET_VALUE, &hkey))
{
if (ERROR_SUCCESS == ::RegCreateKey(hkey, SubKey, &hTempKey))
{
if (ERROR_SUCCESS != ::RegSetValueEx(hTempKey, Key, 0, REG_SZ, lpbName, nLength))
{
cout << "写入错误" << endl;
}
}
::RegCloseKey(hTempKey);
}
::RegCloseKey(hkey);
return true;
}
int main()
{
write_reg_sz(_T("hahah"), _T("URL Protocol"),_T(""));
write_reg_sz(_T("hahah"), _T(""), _T("hahah Protocol"));
write_reg_sz(_T("hahah\\DefaultIcon"), _T(""), _T("XXXX路径"));
write_reg_sz(_T("hahah\\shell"), _T(""), _T(""));
write_reg_sz(_T("hahah\\shell\\open"), _T(""), _T(""));
write_reg_sz(_T("hahah\\shell\\open\\command"), _T(""), _T("XXXXXX路径 %1"));
system("pause");
return 0;
}