//检查HKEY_LOCAL_MACHINE中是否已存在该注册表项
bool exist()
{
HKEY hkResult;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("Software\\Microsoft\\Active Setup\\Installed Components\\{FECFCB51-0975-8171-1FB0-B5C091251604}"),
0, KEY_ALL_ACCESS, &hkResult) == ERROR_SUCCESS) {
printf("该注册表项已存在!\n");
return true;
}
return false;
}

int _tmain(int argc, _TCHAR* argv[])
{
//已存在则删除
if(exist()) {
if (RegDeleteKey(HKEY_LOCAL_MACHINE,
TEXT("Software\\Microsoft\\Active Setup\\Installed Components\\{FECFCB51-0975-8171-1FB0-B5C091251604}")) == ERROR_SUCCESS) {
//以下删除HKEY_CURRENT_USER中该注册表项。
//很重要,删除才能再次使用该注册表项实现自动启动。
//ActiveX的自动启动过程?
RegDeleteKey(HKEY_CURRENT_USER,
TEXT("Software\\Microsoft\\Active Setup\\Installed Components\\{FECFCB51-0975-8171-1FB0-B5C091251604}"));
printf("注册表项删除成功!\n");
} else {
printf("注册表项删除失败!\n");
}
}
//获取exe程序运行路径
TCHAR szPath[MAX_PATH];
ZeroMemory(szPath, sizeof(szPath));
GetModuleFileName(NULL, szPath, MAX_PATH);
//创建注册表项
HKEY hkResult;
if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
TEXT("Software\\Microsoft\\Active Setup\\Installed Components\\{FECFCB51-0975-8171-1FB0-B5C091251604}"),
0, NULL, 0, KEY_ALL_ACCESS, NULL, &hkResult, NULL) == ERROR_SUCCESS) {
RegSetValueEx(hkResult, TEXT("StubPath"), 0, REG_SZ, (BYTE*)szPath, (lstrlen(szPath)+1)*2);
printf("注册表项创建或打开成功!\n");
RegCloseKey(hkResult);
} else {
printf("注册表项创建或打开失败!\n");
}
//暂停下
MessageBox(NULL, TEXT("RegTest"), TEXT("RegTest"), MB_OK);
return 0;
}

参考资料:http://www.feihack.com/article.asp?id=3

http://bbs.eyuyan.com/dispbbs.asp?boardid=124&id=192209