KillerDlg.cpp
上传用户:ghp266
上传日期:2021-03-31
资源大小:6k
文件大小:34k
源码类别:

杀毒

开发平台:

Visual C++

  1. // KillerDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "KillerDlg.h"
  5. #include<Tlhelp32.h>
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. //log
  13. FILE *fp;
  14. //Registry Editor
  15. HKEY hKey;
  16. char content[256];
  17. DWORD dwType=REG_SZ;
  18. DWORD dwLength=256;
  19. struct HKEY__*RootKey;
  20. TCHAR *SubKey;
  21. TCHAR *KeyName;
  22. TCHAR *ValueName;
  23. LPBYTE SetContent_S;
  24. int SetContent_D[256];
  25. BYTE SetContent_B[256];
  26. int ShowContent (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);
  27. int SetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S);
  28. int SetValue_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,int ReSetContent_D[256]);
  29. int SetValue_B (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE ReSetContent_B[256]);
  30. int DeleteKey (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName);
  31. int DeleteValue (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);
  32. /**********************************************************
  33. Function name:ShowContent
  34. Description:show content
  35. Parameter:ReRootKey root key, ReSubKey sub keu
  36. ReValueName value name
  37. Return:int
  38. Time:2006.07.31
  39. ***********************************************************/
  40. ShowContent (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName)
  41. {
  42. int i=0; //0==succeed
  43. if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_READ,&hKey)==ERROR_SUCCESS)
  44. {
  45. if(RegQueryValueEx(hKey,ReValueName,NULL,&dwType,(unsigned char *)content,&dwLength)!=ERROR_SUCCESS)
  46. {
  47. AfxMessageBox("Error:cannot access Registry");
  48. i=1;
  49. }
  50. RegCloseKey(hKey);
  51. }
  52. else
  53. {
  54. AfxMessageBox("Error:cannot find the hKEY");
  55. i=1;
  56. }
  57. return i;
  58. }
  59. /**********************************************************
  60. Function name:SetValue_S
  61. Description:set string value
  62. Parameter:ReRootKey root key, ReSubKey sub keu
  63. ReValueName value name
  64. Return:int
  65. Time:2006.07.31
  66. ***********************************************************/
  67. SetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S)
  68. {
  69. int i=0; //0==succeed
  70. //int StrLength;
  71. //StrLength=CString(SetContent_S).GetLength();
  72. if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
  73. {
  74. if(RegSetValueEx(hKey,ReValueName,NULL,REG_SZ,ReSetContent_S,CString(SetContent_S).GetLength())!=ERROR_SUCCESS)
  75. {
  76. AfxMessageBox("Error:cannot access Registry");
  77. i=1;
  78. }
  79. RegCloseKey(hKey);
  80. }
  81. else
  82. {
  83. AfxMessageBox("Error:cannot find the hKEY");
  84. i=1;
  85. }
  86. return i;
  87. }
  88. /**********************************************************
  89. Function name:SetValue_D
  90. Description:set DWORD value
  91. Parameter:ReRootKey root key, ReSubKey sub keu
  92. ReValueName value name
  93. Return:int
  94. Time:2006.07.31
  95. ***********************************************************/
  96. SetValue_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,int ReSetContent_D[256])
  97. {
  98. int i=0; //0==succeed
  99. if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
  100. {
  101. if(RegSetValueEx(hKey,ReValueName,NULL,REG_DWORD,(const unsigned char *)ReSetContent_D,4)!=ERROR_SUCCESS)
  102. {
  103. AfxMessageBox("Error:cannot access Registry");
  104. i=1;
  105. }
  106. RegCloseKey(hKey);
  107. }
  108. else
  109. {
  110. AfxMessageBox("Error:cannot find the hKEY");
  111. i=1;
  112. }
  113. return i;
  114. }
  115. /**********************************************************
  116. Function name:SetValue_B
  117. Description:set binary value
  118. Parameter:ReRootKey root key, ReSubKey sub keu
  119. ReValueName value name
  120. Return:int
  121. Time:2006.07.31
  122. ***********************************************************/
  123. SetValue_B (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE ReSetContent_B[256])
  124. {
  125. int i=0; //0==succeed
  126. if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
  127. {
  128. if(RegSetValueEx(hKey,ReValueName,NULL,REG_BINARY,(const unsigned char *)ReSetContent_B,4)!=ERROR_SUCCESS)
  129. {
  130. AfxMessageBox("Error:cannot access Registry");
  131. i=1;
  132. }
  133. RegCloseKey(hKey);
  134. }
  135. else
  136. {
  137. AfxMessageBox("Error:cannot find the hKEY");
  138. i=1;
  139. }
  140. return i;
  141. }
  142. /**********************************************************
  143. Function name:DeleteKey
  144. Description:delete sub key
  145. Parameter:ReRootKey root key, ReSubKey sub keu
  146. ReValueName value name
  147. Return:int
  148. Time:2006.07.31
  149. ***********************************************************/
  150. DeleteKey (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName)
  151. {
  152. int i=0; //0==succeed
  153. if((RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey))==ERROR_SUCCESS)
  154. {
  155. if((RegDeleteKey(hKey,ReKeyName))!=ERROR_SUCCESS)
  156. {
  157. AfxMessageBox("Error: cannot delete sub key!");
  158. i=1;
  159. }
  160. RegCloseKey(hKey);
  161. }
  162. else
  163. {
  164. AfxMessageBox("Error:cannot find the hKEY");
  165. i=1;
  166. }
  167. return i;
  168. }
  169. /**********************************************************
  170. Function name:DeleteValue
  171. Description:delete value
  172. Parameter:ReRootKey root key, ReSubKey sub keu
  173. ReValueName value name
  174. Return:int
  175. Time:2006.07.31
  176. ***********************************************************/
  177. DeleteValue (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName)
  178. {
  179. int i=0; //0==succeed
  180. if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
  181. {
  182. if(RegDeleteValue(hKey,ReValueName)!=ERROR_SUCCESS)
  183. {
  184. i=1;
  185. }
  186. RegCloseKey(hKey);
  187. }
  188. else
  189. {
  190. i=1;
  191. }
  192. return i;
  193. }
  194. /////////////////////////////////////////////////////////////////////////////
  195. // CAboutDlg dialog used for App About
  196. class CAboutDlg : public CDialog
  197. {
  198. public:
  199. CAboutDlg();
  200. // Dialog Data
  201. //{{AFX_DATA(CAboutDlg)
  202. enum { IDD = IDD_ABOUTBOX };
  203. //}}AFX_DATA
  204. // ClassWizard generated virtual function overrides
  205. //{{AFX_VIRTUAL(CAboutDlg)
  206. protected:
  207. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
  208. //}}AFX_VIRTUAL
  209. // Implementation
  210. protected:
  211. //{{AFX_MSG(CAboutDlg)
  212. //}}AFX_MSG
  213. DECLARE_MESSAGE_MAP()
  214. };
  215. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  216. {
  217. //{{AFX_DATA_INIT(CAboutDlg)
  218. //}}AFX_DATA_INIT
  219. }
  220. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  221. {
  222. CDialog::DoDataExchange(pDX);
  223. //{{AFX_DATA_MAP(CAboutDlg)
  224. //}}AFX_DATA_MAP
  225. }
  226. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  227. //{{AFX_MSG_MAP(CAboutDlg)
  228. // No message handlers
  229. //}}AFX_MSG_MAP
  230. END_MESSAGE_MAP()
  231. /////////////////////////////////////////////////////////////////////////////
  232. // CMyDlg dialog
  233. CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
  234. : CDialog(CMyDlg::IDD, pParent)
  235. {
  236. //{{AFX_DATA_INIT(CMyDlg)
  237. // NOTE: the ClassWizard will add member initialization here
  238. //}}AFX_DATA_INIT
  239. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  240. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  241. }
  242. void CMyDlg::DoDataExchange(CDataExchange* pDX)
  243. {
  244. CDialog::DoDataExchange(pDX);
  245. //{{AFX_DATA_MAP(CMyDlg)
  246. DDX_Control(pDX, IDC_LIST1, m_list);
  247. DDX_Control(pDX, IDC_PROGRESS1, m_progress);
  248. //}}AFX_DATA_MAP
  249. }
  250. BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
  251. //{{AFX_MSG_MAP(CMyDlg)
  252. ON_WM_SYSCOMMAND()
  253. ON_WM_PAINT()
  254. ON_WM_QUERYDRAGICON()
  255. ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
  256. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  257. ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
  258. //}}AFX_MSG_MAP
  259. END_MESSAGE_MAP()
  260. /////////////////////////////////////////////////////////////////////////////
  261. // CMyDlg message handlers
  262. BOOL CMyDlg::OnInitDialog()
  263. {
  264. CDialog::OnInitDialog();
  265. m_bFinded = FALSE;
  266. m_progress.SetRange(0,100);
  267. m_progress.SetPos(0);
  268. iPos = 0;
  269. m_list.InsertColumn(0, "    Virus Name", LVCFMT_LEFT, 120, 0);
  270. m_list.InsertColumn(1, "ProID", LVCFMT_CENTER, 65, 1);
  271. m_list.InsertColumn(2, "Parent ProID", LVCFMT_CENTER, 90, 2);
  272. m_list.DeleteAllItems();
  273. // Add "About..." menu item to system menu.
  274. // IDM_ABOUTBOX must be in the system command range.
  275. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  276. ASSERT(IDM_ABOUTBOX < 0xF000);
  277. CMenu* pSysMenu = GetSystemMenu(FALSE);
  278. if (pSysMenu != NULL)
  279. {
  280. CString strAboutMenu;
  281. strAboutMenu.LoadString(IDS_ABOUTBOX);
  282. if (!strAboutMenu.IsEmpty())
  283. {
  284. pSysMenu->AppendMenu(MF_SEPARATOR);
  285. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  286. }
  287. }
  288. // Set the icon for this dialog.  The framework does this automatically
  289. //  when the application's main window is not a dialog
  290. SetIcon(m_hIcon, TRUE); // Set big icon
  291. SetIcon(m_hIcon, FALSE); // Set small icon
  292. // TODO: Add extra initialization here
  293. return TRUE;  // return TRUE  unless you set the focus to a control
  294. }
  295. void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
  296. {
  297. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  298. {
  299. CAboutDlg dlgAbout;
  300. dlgAbout.DoModal();
  301. }
  302. else
  303. {
  304. CDialog::OnSysCommand(nID, lParam);
  305. }
  306. }
  307. // If you add a minimize button to your dialog, you will need the code below
  308. //  to draw the icon.  For MFC applications using the document/view model,
  309. //  this is automatically done for you by the framework.
  310. void CMyDlg::OnPaint()
  311. {
  312. if (IsIconic())
  313. {
  314. CPaintDC dc(this); // device context for painting
  315. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  316. // Center icon in client rectangle
  317. int cxIcon = GetSystemMetrics(SM_CXICON);
  318. int cyIcon = GetSystemMetrics(SM_CYICON);
  319. CRect rect;
  320. GetClientRect(&rect);
  321. int x = (rect.Width() - cxIcon + 1) / 2;
  322. int y = (rect.Height() - cyIcon + 1) / 2;
  323. // Draw the icon
  324. dc.DrawIcon(x, y, m_hIcon);
  325. }
  326. else
  327. {
  328. CDialog::OnPaint();
  329. }
  330. }
  331. // The system calls this to obtain the cursor to display while the user drags
  332. //  the minimized window.
  333. HCURSOR CMyDlg::OnQueryDragIcon()
  334. {
  335. return (HCURSOR) m_hIcon;
  336. }
  337. /**********************************************************
  338. Function name:DeleteVirusFiles
  339. Description:delete virus files
  340. Parameter: NULL
  341. Return:int count of virus files
  342. Time:2006.07.31
  343. ***********************************************************/
  344. int CMyDlg::DeleteVirusFiles()
  345. {
  346. int i = 0;
  347. BOOL bRet = FALSE;
  348. char chBuf[256];
  349. char chLog[256];
  350. CString str, strWIN, strSYS, strPRO;
  351. GetWindowsDirectory(chBuf, 256);
  352. strWIN = chBuf;
  353. strcat(chBuf, "\SMSS.EXE");
  354. HANDLE hFile = CreateFile(chBuf, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  355. if (hFile == INVALID_HANDLE_VALUE)
  356. {
  357. WriteLog("No virus files found");
  358. return -1;
  359. }
  360. CloseHandle(hFile);
  361. WriteLog("Find virus key process:SMSS.exe");
  362. m_progress.SetPos(iPos++);
  363. str = strWIN + "\1.com";
  364. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  365. if (bRet)
  366. {
  367. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  368. WriteLog(chLog);
  369. }
  370. else
  371. {
  372. i++;
  373. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  374. WriteLog(chLog);
  375. }
  376. m_progress.SetPos(iPos++);
  377. str = strWIN + "\ExERoute.exe";
  378. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  379. if (bRet)
  380. {
  381. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  382. WriteLog(chLog);
  383. }
  384. else
  385. {
  386. i++;
  387. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  388. WriteLog(chLog);
  389. }
  390. m_progress.SetPos(iPos++);
  391. str = strWIN + "\explorer.com";
  392. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  393. if (bRet)
  394. {
  395. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  396. WriteLog(chLog);
  397. }
  398. else
  399. {
  400. i++;
  401. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  402. WriteLog(chLog);
  403. }
  404. m_progress.SetPos(iPos++);
  405. str = strWIN + "\finder.com";
  406. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  407. if (bRet)
  408. {
  409. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  410. WriteLog(chLog);
  411. }
  412. else
  413. {
  414. i++;
  415. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  416. WriteLog(chLog);
  417. }
  418. m_progress.SetPos(iPos++);
  419. str = strWIN + "\SMSS.EXE";
  420. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  421. if (bRet)
  422. {
  423. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  424. WriteLog(chLog);
  425. }
  426. else
  427. {
  428. i++;
  429. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  430. WriteLog(chLog);
  431. }
  432. m_progress.SetPos(iPos++);
  433. str = strWIN + "\BOOT.BIN.BAK";
  434. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  435. if (bRet)
  436. {
  437. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  438. WriteLog(chLog);
  439. }
  440. else
  441. {
  442. i++;
  443. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  444. WriteLog(chLog);
  445. }
  446. m_progress.SetPos(iPos++);
  447. str = strWIN + "\Debug\DebugProgram.exe";
  448. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  449. if (bRet)
  450. {
  451. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  452. WriteLog(chLog);
  453. }
  454. else
  455. {
  456. i++;
  457. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  458. WriteLog(chLog);
  459. }
  460. m_progress.SetPos(iPos++);
  461. strSYS = strWIN + "\system32";
  462. str = strSYS + "\command.pif";
  463. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  464. if (bRet)
  465. {
  466. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  467. WriteLog(chLog);
  468. }
  469. else
  470. {
  471. i++;
  472. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  473. WriteLog(chLog);
  474. }
  475. m_progress.SetPos(iPos++);
  476. str = strSYS + "\dxdiag.com";
  477. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  478. if (bRet)
  479. {
  480. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  481. WriteLog(chLog);
  482. }
  483. else
  484. {
  485. i++;
  486. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  487. WriteLog(chLog);
  488. }
  489. m_progress.SetPos(iPos++);
  490. str = strSYS + "\finder.com";
  491. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  492. if (bRet)
  493. {
  494. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  495. WriteLog(chLog);
  496. }
  497. else
  498. {
  499. i++;
  500. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  501. WriteLog(chLog);
  502. }
  503. m_progress.SetPos(iPos++);
  504. str = strSYS + "\MSCONFIG.COM";
  505. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  506. if (bRet)
  507. {
  508. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  509. WriteLog(chLog);
  510. }
  511. else
  512. {
  513. i++;
  514. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  515. WriteLog(chLog);
  516. }
  517. m_progress.SetPos(iPos++);
  518. str = strSYS + "\regedit.com";
  519. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  520. if (bRet)
  521. {
  522. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  523. WriteLog(chLog);
  524. }
  525. else
  526. {
  527. i++;
  528. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  529. WriteLog(chLog);
  530. }
  531. m_progress.SetPos(iPos++);
  532. str = strSYS + "\rundll32.com";
  533. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  534. if (bRet)
  535. {
  536. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  537. WriteLog(chLog);
  538. }
  539. else
  540. {
  541. i++;
  542. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  543. WriteLog(chLog);
  544. }
  545. m_progress.SetPos(iPos++);
  546. strPRO = strWIN.Left(1) + ":\Program Files";
  547. str = strPRO + "\Internet Explorer\iexplore.com";
  548. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  549. if (bRet)
  550. {
  551. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  552. WriteLog(chLog);
  553. }
  554. else
  555. {
  556. i++;
  557. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  558. WriteLog(chLog);
  559. }
  560. m_progress.SetPos(iPos++);
  561. str = strPRO + "\Common Files\iexplore.pif";
  562. bRet = DeleteFile( str.GetBuffer(str.GetLength()) );
  563. if (bRet)
  564. {
  565. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  566. WriteLog(chLog);
  567. }
  568. else
  569. {
  570. i++;
  571. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  572. WriteLog(chLog);
  573. }
  574. m_progress.SetPos(iPos++);
  575. bRet = DeleteFile("D:\autorun.inf");
  576. if (bRet)
  577. {
  578. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  579. WriteLog(chLog);
  580. }
  581. else
  582. {
  583. i++;
  584. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  585. WriteLog(chLog);
  586. }
  587. m_progress.SetPos(iPos++);
  588. bRet = DeleteFile("D:\pagefile.pif");
  589. if (bRet)
  590. {
  591. sprintf(chLog, "deleted virus file‘ %s’ successfully!", str);
  592. WriteLog(chLog);
  593. }
  594. else
  595. {
  596. i++;
  597. sprintf(chLog, "failed to delete virus file‘ %s’", str);
  598. WriteLog(chLog);
  599. }
  600. m_progress.SetPos(iPos++);
  601. return i;
  602. }
  603. /**********************************************************
  604. Function name:DeleteRegValues
  605. Description:delete virus registry
  606. Parameter: NULL
  607. Return:int
  608. Time:2006.07.31
  609. ***********************************************************/
  610. int CMyDlg::DeleteRegValues()
  611. {
  612. int i = 0;
  613. char chLog[256];
  614. RootKey = HKEY_LOCAL_MACHINE;
  615. SubKey = "Software\Microsoft\Windows\CurrentVersion\Run";
  616. ValueName = "TProgram";
  617. if( !(DeleteValue(RootKey, SubKey, ValueName)) )
  618. {
  619. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  620. WriteLog(chLog);
  621. }
  622. else
  623. {
  624. i++;
  625. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  626. WriteLog(chLog);
  627. }
  628. m_progress.SetPos(iPos++);
  629. RootKey = HKEY_LOCAL_MACHINE;
  630. SubKey = "Software\Microsoft\Windows\CurrentVersion\Runservices";
  631. ValueName = "TProgram";
  632. if( !(DeleteValue(RootKey, SubKey, ValueName)) )
  633. {
  634. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  635. WriteLog(chLog);
  636. }
  637. else
  638. {
  639. i++;
  640. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  641. WriteLog(chLog);
  642. }
  643. m_progress.SetPos(iPos++);
  644. RootKey = HKEY_LOCAL_MACHINE;
  645. SubKey = "Software\Microsoft\Windows NT\CurrentVersion\Winlogon";
  646. ValueName = "Shell";
  647. SetContent_S = LPBYTE("Explorer.exe");
  648. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  649. {
  650. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  651. WriteLog(chLog);
  652. }
  653. else
  654. {
  655. i++;
  656. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  657. WriteLog(chLog);
  658. }
  659. m_progress.SetPos(iPos++);
  660. RootKey = HKEY_LOCAL_MACHINE;
  661. SubKey = "Software\Classes\.bfc\ShellNew";
  662. ValueName = "Command";
  663. SetContent_S = LPBYTE("%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\syncui.dll,Briefcase_Create %2!d! %1");
  664. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  665. {
  666. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  667. WriteLog(chLog);
  668. }
  669. else
  670. {
  671. i++;
  672. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  673. WriteLog(chLog);
  674. }
  675. m_progress.SetPos(iPos++);
  676. RootKey = HKEY_LOCAL_MACHINE;
  677. SubKey = "Software\Classes\.lnk\ShellNew";
  678. ValueName = "Command";
  679. SetContent_S = LPBYTE("rundll32.exe appwiz.cpl,NewLinkHere %1");
  680. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  681. {
  682. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  683. WriteLog(chLog);
  684. }
  685. else
  686. {
  687. i++;
  688. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  689. WriteLog(chLog);
  690. }
  691. m_progress.SetPos(iPos++);
  692. RootKey = HKEY_LOCAL_MACHINE;
  693. SubKey = "Software\Classes\Applications\iexplore.exe\shell\open\command";
  694. ValueName = "";
  695. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\IEXPLORE.EXE");
  696. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  697. {
  698. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  699. WriteLog(chLog);
  700. }
  701. else
  702. {
  703. i++;
  704. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  705. WriteLog(chLog);
  706. }
  707. m_progress.SetPos(iPos++);
  708. RootKey = HKEY_LOCAL_MACHINE;
  709. SubKey = "Software\Classes\CLSID\{871C5380-42A0-1069-A2EA-08002B30309D}\shell\OpenHomePage\command";
  710. ValueName = "";
  711. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\IEXPLORE.EXE");
  712. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  713. {
  714. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  715. WriteLog(chLog);
  716. }
  717. else
  718. {
  719. i++;
  720. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  721. WriteLog(chLog);
  722. }
  723. m_progress.SetPos(iPos++);
  724. RootKey = HKEY_LOCAL_MACHINE;
  725. SubKey = "Software\Classes\cplfile\shell\cplopen\command";
  726. ValueName = "";
  727. SetContent_S = LPBYTE("rundll32.exe shell32.dll,Control_RunDLL %1,%*");
  728. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  729. {
  730. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  731. WriteLog(chLog);
  732. }
  733. else
  734. {
  735. i++;
  736. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  737. WriteLog(chLog);
  738. }
  739. m_progress.SetPos(iPos++);
  740. RootKey = HKEY_LOCAL_MACHINE;
  741. SubKey = "Software\Classes\Drive\shell\find\command";
  742. ValueName = "";
  743. SetContent_S = LPBYTE("%SystemRoot%\Explorer.exe");
  744. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  745. {
  746. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  747. WriteLog(chLog);
  748. }
  749. else
  750. {
  751. i++;
  752. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  753. WriteLog(chLog);
  754. }
  755. m_progress.SetPos(iPos++);
  756. RootKey = HKEY_LOCAL_MACHINE;
  757. SubKey = "Software\Classes\dunfile\shell\open\command";
  758. ValueName = "";
  759. SetContent_S = LPBYTE("%SystemRoot%\system32\RUNDLL32.EXE NETSHELL.DLL,InvokeDunFile %1");
  760. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  761. {
  762. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  763. WriteLog(chLog);
  764. }
  765. else
  766. {
  767. i++;
  768. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  769. WriteLog(chLog);
  770. }
  771. m_progress.SetPos(iPos++);
  772. RootKey = HKEY_LOCAL_MACHINE;
  773. SubKey = "Software\Classes\ftp\shell\open\command";
  774. ValueName = "";
  775. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\iexplore.exe %1");
  776. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  777. {
  778. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  779. WriteLog(chLog);
  780. }
  781. else
  782. {
  783. i++;
  784. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  785. WriteLog(chLog);
  786. }
  787. m_progress.SetPos(iPos++);
  788. RootKey = HKEY_LOCAL_MACHINE;
  789. SubKey = "Software\Classes\htmlfile\shell\open\command";
  790. ValueName = "";
  791. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\iexplore.exe %1");
  792. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  793. {
  794. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  795. WriteLog(chLog);
  796. }
  797. else
  798. {
  799. i++;
  800. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  801. WriteLog(chLog);
  802. }
  803. m_progress.SetPos(iPos++);
  804. RootKey = HKEY_LOCAL_MACHINE;
  805. SubKey = "Software\Classes\htmlfile\shell\opennew\command";
  806. ValueName = "";
  807. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\iexplore.exe %1");
  808. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  809. {
  810. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  811. WriteLog(chLog);
  812. }
  813. else
  814. {
  815. i++;
  816. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  817. WriteLog(chLog);
  818. }
  819. m_progress.SetPos(iPos++);
  820. RootKey = HKEY_LOCAL_MACHINE;
  821. SubKey = "Software\Classes\http\shell\open\command";
  822. ValueName = "";
  823. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\iexplore.exe %1");
  824. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  825. {
  826. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  827. WriteLog(chLog);
  828. }
  829. else
  830. {
  831. i++;
  832. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  833. WriteLog(chLog);
  834. }
  835. m_progress.SetPos(iPos++);
  836. RootKey = HKEY_LOCAL_MACHINE;
  837. SubKey = "Software\Classes\inffile\shell\install\command";
  838. ValueName = "";
  839. SetContent_S = LPBYTE("%SystemRoot%\System32\rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %1");
  840. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  841. {
  842. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  843. WriteLog(chLog);
  844. }
  845. else
  846. {
  847. i++;
  848. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  849. WriteLog(chLog);
  850. }
  851. m_progress.SetPos(iPos++);
  852. RootKey = HKEY_LOCAL_MACHINE;
  853. SubKey = "Software\Classes\inffile\shell\open\command";
  854. ValueName = "";
  855. SetContent_S = LPBYTE("%SystemRoot%\System32\NOTEPAD.EXE %1");
  856. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  857. {
  858. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  859. WriteLog(chLog);
  860. }
  861. else
  862. {
  863. i++;
  864. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  865. WriteLog(chLog);
  866. }
  867. m_progress.SetPos(iPos++);
  868. RootKey = HKEY_LOCAL_MACHINE;
  869. SubKey = "Software\Classes\inffile\shell\print\command";
  870. ValueName = "";
  871. SetContent_S = LPBYTE("%SystemRoot%\System32\NOTEPAD.EXE /p %1");
  872. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  873. {
  874. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  875. WriteLog(chLog);
  876. }
  877. else
  878. {
  879. i++;
  880. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  881. WriteLog(chLog);
  882. }
  883. m_progress.SetPos(iPos++);
  884. RootKey = HKEY_LOCAL_MACHINE;
  885. SubKey = "Software\Classes\InternetShortcut\shell\open\command";
  886. ValueName = "";
  887. SetContent_S = LPBYTE("%ProgramFiles%\Internet Explorer\iexplore.exe %1");
  888. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  889. {
  890. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  891. WriteLog(chLog);
  892. }
  893. else
  894. {
  895. i++;
  896. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  897. WriteLog(chLog);
  898. }
  899. m_progress.SetPos(iPos++);
  900. RootKey = HKEY_LOCAL_MACHINE;
  901. SubKey = "Software\Classes\InternetShortcut\shell\print\command";
  902. ValueName = "";
  903. SetContent_S = LPBYTE("rundll32.exe %SystemRoot%\system32\mshtml.dll,PrintHTML "%1"");
  904. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  905. {
  906. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  907. WriteLog(chLog);
  908. }
  909. else
  910. {
  911. i++;
  912. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  913. WriteLog(chLog);
  914. }
  915. m_progress.SetPos(iPos++);
  916. RootKey = HKEY_LOCAL_MACHINE;
  917. SubKey = "Software\Classes\InternetShortcut\shell\printto\command";
  918. ValueName = "";
  919. SetContent_S = LPBYTE("rundll32.exe %SystemRoot%\system32\mshtml.dll,PrintHTML "%1" "%2" "%3" "%4"");
  920. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  921. {
  922. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  923. WriteLog(chLog);
  924. }
  925. else
  926. {
  927. i++;
  928. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  929. WriteLog(chLog);
  930. }
  931. m_progress.SetPos(iPos++);
  932. RootKey = HKEY_LOCAL_MACHINE;
  933. SubKey = "Software\Classes\scrfile\shell\install\command";
  934. ValueName = "";
  935. SetContent_S = LPBYTE("rundll32.exe desk.cpl,InstallScreenSaver %l");
  936. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  937. {
  938. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  939. WriteLog(chLog);
  940. }
  941. else
  942. {
  943. i++;
  944. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  945. WriteLog(chLog);
  946. }
  947. m_progress.SetPos(iPos++);
  948. RootKey = HKEY_LOCAL_MACHINE;
  949. SubKey = "Software\Classes\scrfile\shell\open\command";
  950. ValueName = "";
  951. SetContent_S = LPBYTE(""%1" /S");
  952. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  953. {
  954. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  955. WriteLog(chLog);
  956. }
  957. else
  958. {
  959. i++;
  960. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  961. WriteLog(chLog);
  962. }
  963. m_progress.SetPos(iPos++);
  964. RootKey = HKEY_LOCAL_MACHINE;
  965. SubKey = "Software\Classes\scriptletfile\shell\Generate Typelib\command";
  966. ValueName = "";
  967. SetContent_S = LPBYTE(""C:\WINNT\system32\RUNDLL32.EXE" C:\WINNT\system32\scrobj.dll,GenerateTypeLib "%1"");
  968. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  969. {
  970. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  971. WriteLog(chLog);
  972. }
  973. else
  974. {
  975. i++;
  976. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  977. WriteLog(chLog);
  978. }
  979. m_progress.SetPos(iPos++);
  980. RootKey = HKEY_LOCAL_MACHINE;
  981. SubKey = "Software\Classes\scriptletfile\shell\open\command";
  982. ValueName = "";
  983. SetContent_S = LPBYTE(""C:\WINNT\NOTEPAD.EXE" "%1"");
  984. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  985. {
  986. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  987. WriteLog(chLog);
  988. }
  989. else
  990. {
  991. i++;
  992. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  993. WriteLog(chLog);
  994. }
  995. m_progress.SetPos(iPos++);
  996. RootKey = HKEY_LOCAL_MACHINE;
  997. SubKey = "Software\Classes\telnet\shell\open\command";
  998. ValueName = "";
  999. SetContent_S = LPBYTE("C:\Program Files\Windows NT\hypertrm.exe /t %1");
  1000. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  1001. {
  1002. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  1003. WriteLog(chLog);
  1004. }
  1005. else
  1006. {
  1007. i++;
  1008. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  1009. WriteLog(chLog);
  1010. }
  1011. m_progress.SetPos(iPos++);
  1012. RootKey = HKEY_LOCAL_MACHINE;
  1013. SubKey = "Software\Classes\Unknown\shell\openas\command";
  1014. ValueName = "";
  1015. SetContent_S = LPBYTE("%SystemRoot%\system32\rundll32.exe %SystemRoot%\system32\shell32.dll,OpenAs_RunDLL %1");
  1016. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  1017. {
  1018. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  1019. WriteLog(chLog);
  1020. }
  1021. else
  1022. {
  1023. i++;
  1024. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  1025. WriteLog(chLog);
  1026. }
  1027. m_progress.SetPos(iPos++);
  1028. RootKey = HKEY_LOCAL_MACHINE;
  1029. SubKey = "Software\Clients\StartMenuInternet";
  1030. ValueName = "";
  1031. SetContent_S = LPBYTE("iexplore.exe");
  1032. if( !(SetValue_S(RootKey, SubKey, ValueName, SetContent_S)) )
  1033. {
  1034. sprintf(chLog, "recovered registry key <%s> successfully!", SubKey);
  1035. WriteLog(chLog);
  1036. }
  1037. else
  1038. {
  1039. i++;
  1040. sprintf(chLog, "failed to recover registry key <%s>", SubKey);
  1041. WriteLog(chLog);
  1042. }
  1043. m_progress.SetPos(iPos++);
  1044. return i;
  1045. }
  1046. /**********************************************************
  1047. Function name:WriteLog
  1048. Description: log
  1049. Parameter:  char* chLog
  1050. Return:void
  1051. Time:2006.07.31
  1052. ***********************************************************/
  1053. void CMyDlg::WriteLog(char* chLog)
  1054. {
  1055. SYSTEMTIME NowT;
  1056. GetLocalTime(&NowT);
  1057. //char chTEMP[256];
  1058. //sprintf(chTEMP,"%%SystemRoot%%\system32\syncui.dll,Briefcase_Create %%2!d! %%1");
  1059. fp = fopen("result.log", "a+");
  1060. if (fp != NULL)
  1061. {
  1062. fprintf(fp," %d/%d/%d/ %d:%d:%d %sn", NowT.wYear, NowT.wMonth, NowT.wDay,
  1063. NowT.wHour, NowT.wMinute, NowT.wSecond, chLog);
  1064. //fprintf(fp,"%s%n",chLog);
  1065. fclose(fp);
  1066. }
  1067. }
  1068. void CMyDlg::OnOK()
  1069. {
  1070. CString strVirusName;
  1071. char chMsg[256];
  1072. int iCount = 0;
  1073. iCount = DeleteRegValues();
  1074. if (iCount>0)
  1075. {
  1076. sprintf(chMsg, "failed to delete [%d] virus files, please try it again on Safemode. read log for details.", iCount);
  1077. AfxMessageBox(chMsg);
  1078. }
  1079. m_bFinded = FALSE;
  1080. m_list.DeleteAllItems();
  1081. HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  1082. if (SnapShot == NULL)
  1083. {
  1084. MessageBox("failed to kill the virus, please try it again on Safemode.");
  1085. return;
  1086. }
  1087. SHFILEINFO shSmall;
  1088. int nIndex;
  1089. CString str, prcnum;
  1090. PROCESSENTRY32 ProcessInfo;//declare process information
  1091. ProcessInfo.dwSize = sizeof(ProcessInfo);//size of ProcessInfo
  1092. BOOL Status = Process32First(SnapShot, &ProcessInfo);
  1093. int m_nProcess=0, num=0;
  1094. while(Status)
  1095. {
  1096. m_nProcess++;
  1097. num++;
  1098. //ZeroMemory(&shSmall,sizeof(shSmall));
  1099. //get process info
  1100. SHGetFileInfo(ProcessInfo.szExeFile, 0, &shSmall,
  1101. sizeof(shSmall), SHGFI_ICON|SHGFI_SMALLICON);
  1102. strVirusName = ProcessInfo.szExeFile;
  1103. if (!strVirusName.Compare("SMSS.exe"))
  1104. {
  1105. WriteLog("detected SMSS virus");
  1106. nIndex = m_list.InsertItem(m_nProcess, ProcessInfo.szExeFile);
  1107. str.Format("%08x",ProcessInfo.th32ProcessID);
  1108. m_list.SetItemText(nIndex,1,str);
  1109. str.Format("%08x",ProcessInfo.th32ParentProcessID);
  1110. m_list.SetItemText(nIndex,2,str);
  1111. HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE,ProcessInfo.th32ProcessID);
  1112. if (!::TerminateProcess(hProcess,1))
  1113. {
  1114. WriteLog("failed to kill");
  1115. MessageBox("failed to kill the virus, please try it again on Windows Safemode.");
  1116. iPos = 0;
  1117. m_progress.SetPos(iPos);
  1118. return;
  1119. }
  1120. m_progress.SetPos(iPos++);
  1121. Sleep(100);//wait for stopping process
  1122. iCount = DeleteVirusFiles();
  1123. if (iCount>0)
  1124. {
  1125. sprintf(chMsg, "failed to delete [%d] virus files, please try it again on Safemode. read log for details.", iCount);
  1126. AfxMessageBox(chMsg);
  1127. }
  1128. iCount = DeleteRegValues();
  1129. if (iCount>0)
  1130. {
  1131. sprintf(chMsg, "failed to delete [%d] virus files, please try it again on Safemode. read log for details.", iCount);
  1132. AfxMessageBox(chMsg);
  1133. }
  1134. m_bFinded = TRUE;
  1135. break;
  1136. }
  1137. //get next process info
  1138. Status=Process32Next(SnapShot,&ProcessInfo);
  1139. }
  1140. if (!m_bFinded)
  1141. {
  1142. WriteLog("no virus");
  1143. if (DeleteVirusFiles() >= 0)
  1144. {//cannot be found in processes, but in harddisk
  1145. m_bFinded = TRUE;
  1146. iCount = DeleteRegValues();
  1147. if (iCount>0)
  1148. {
  1149. sprintf(chMsg, "failed to delete [%d] virus files, please try it again on Safemode. read log for details.", iCount);
  1150. AfxMessageBox(chMsg);
  1151. }
  1152. }
  1153. }
  1154. m_progress.SetPos(100);
  1155. if (!m_bFinded)
  1156. MessageBox("congratulation! no virus be found");
  1157. m_progress.SetPos(0);
  1158. //CDialog::OnOK();
  1159. }
  1160. void CMyDlg::OnCancel()
  1161. {
  1162. // TODO: Add extra cleanup here
  1163. CDialog::OnCancel();
  1164. }
  1165. void CMyDlg::OnButton2()
  1166. {
  1167. ShellExecute(NULL,"open","result.log","","", SW_SHOW);
  1168. }
  1169. void CMyDlg::OnButton1()
  1170. {
  1171. DeleteFile("result.log");
  1172. }
  1173. void CMyDlg::OnButton3()
  1174. {
  1175. PROCESS_INFORMATION pProcInfo;
  1176. STARTUPINFO startUpInfo = { sizeof(STARTUPINFO),NULL,"",NULL,0,0,0,0,0,0,0,STARTF_USESHOWWINDOW,0,0,NULL,0,0,0};
  1177. startUpInfo.wShowWindow = SW_SHOW;
  1178. startUpInfo.lpDesktop = NULL;
  1179. CreateProcess("C:\WINNT\explore.exe","d:\a.exe",NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,"d:\",&startUpInfo,&pProcInfo);
  1180. }