#include <atlbase.h>
m_szGUID ="{9F0DBE59-C479-49c5-951B-2545242FBDF6}"; //设置GUID
m_szCmd = "cmd /K dir c://"; //设置命令
m_szIconPath = "F://res//MFC.ico"; //图标文件
m_szDName = "我的图标"; //设置显示的名称
//提供两个按钮响应函数模拟创建过程
void CDesktop_scDlg::OnCreate()
{
UpdateData(TRUE);
//
char szTemp[256];
CRegKey m_kdsktp;
//创建GUID入口
sprintf(szTemp,"CLSID//%s",m_szGUID);
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp);
m_kdsktp.SetValue(m_szDName);
m_kdsktp.Close();
//设置图标
sprintf(szTemp,"CLSID//%s//DefaultIcon",m_szGUID);
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp);
m_kdsktp.SetValue(m_szIconPath);
m_kdsktp.Close();
//设置双击图标时的打开命令
sprintf(szTemp,"CLSID//%s//Shell//Open//Command",m_szGUID);
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp );
m_kdsktp.SetValue(m_szCmd);
m_kdsktp.Close();
//设置菜单属性
sprintf(szTemp,"CLSID//%s//ShellFolder",m_szGUID);
BYTE bValue[4];
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp);
bValue[0]=0x0; //"00.00.00.00"
bValue[1]=0x0;
bValue[2]=0x0;
bValue[3]=0x0;
RegSetValueEx(m_kdsktp.m_hKey,"Attributes",0,REG_BINARY,bValue,4);
m_kdsktp.Close();
//在桌面放置图标
sprintf(szTemp,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Desktop//NameSpace//%s",m_szGUID);
m_kdsktp.Create(HKEY_LOCAL_MACHINE,szTemp);
m_kdsktp.SetValue(m_szDName);
m_kdsktp.Close();
//通知桌面更新
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_FLUSHNOWAIT,0, 0);
}
void CDesktop_scDlg::OnDel()
{
UpdateData(TRUE);
//
char szTemp[256];
CRegKey m_kdsktp;
//删除GUID入口
sprintf(szTemp,"CLSID");
m_kdsktp.Open(HKEY_CLASSES_ROOT,szTemp);
m_kdsktp.DeleteSubKey(m_szGUID);
m_kdsktp.Close();
//删除桌面图标
sprintf(szTemp,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Desktop//NameSpace");
m_kdsktp.Open(HKEY_LOCAL_MACHINE,szTemp);
m_kdsktp.DeleteSubKey(m_szGUID);
m_kdsktp.Close();
//通知桌面更新
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_FLUSHNOWAIT,0, 0);
}
m_szGUID ="{9F0DBE59-C479-49c5-951B-2545242FBDF6}"; //设置GUID
m_szCmd = "cmd /K dir c://"; //设置命令
m_szIconPath = "F://res//MFC.ico"; //图标文件
m_szDName = "我的图标"; //设置显示的名称
//提供两个按钮响应函数模拟创建过程
void CDesktop_scDlg::OnCreate()
{
UpdateData(TRUE);
//
char szTemp[256];
CRegKey m_kdsktp;
//创建GUID入口
sprintf(szTemp,"CLSID//%s",m_szGUID);
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp);
m_kdsktp.SetValue(m_szDName);
m_kdsktp.Close();
//设置图标
sprintf(szTemp,"CLSID//%s//DefaultIcon",m_szGUID);
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp);
m_kdsktp.SetValue(m_szIconPath);
m_kdsktp.Close();
//设置双击图标时的打开命令
sprintf(szTemp,"CLSID//%s//Shell//Open//Command",m_szGUID);
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp );
m_kdsktp.SetValue(m_szCmd);
m_kdsktp.Close();
//设置菜单属性
sprintf(szTemp,"CLSID//%s//ShellFolder",m_szGUID);
BYTE bValue[4];
m_kdsktp.Create(HKEY_CLASSES_ROOT,szTemp);
bValue[0]=0x0; //"00.00.00.00"
bValue[1]=0x0;
bValue[2]=0x0;
bValue[3]=0x0;
RegSetValueEx(m_kdsktp.m_hKey,"Attributes",0,REG_BINARY,bValue,4);
m_kdsktp.Close();
//在桌面放置图标
sprintf(szTemp,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Desktop//NameSpace//%s",m_szGUID);
m_kdsktp.Create(HKEY_LOCAL_MACHINE,szTemp);
m_kdsktp.SetValue(m_szDName);
m_kdsktp.Close();
//通知桌面更新
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_FLUSHNOWAIT,0, 0);
}
void CDesktop_scDlg::OnDel()
{
UpdateData(TRUE);
//
char szTemp[256];
CRegKey m_kdsktp;
//删除GUID入口
sprintf(szTemp,"CLSID");
m_kdsktp.Open(HKEY_CLASSES_ROOT,szTemp);
m_kdsktp.DeleteSubKey(m_szGUID);
m_kdsktp.Close();
//删除桌面图标
sprintf(szTemp,"SOFTWARE//Microsoft//Windows//CurrentVersion//Explorer//Desktop//NameSpace");
m_kdsktp.Open(HKEY_LOCAL_MACHINE,szTemp);
m_kdsktp.DeleteSubKey(m_szGUID);
m_kdsktp.Close();
//通知桌面更新
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_FLUSHNOWAIT,0, 0);
}