ModulVer.cpp
上传用户:shouhua
上传日期:2014-12-06
资源大小:5685k
文件大小:2k
源码类别:

杀毒

开发平台:

Visual C++

  1. ////////////////////////////////////////////////////////////////
  2. // 1998 Microsoft Systems Journal
  3. // If this code works, it was written by Paul DiLascia.
  4. // If not, I don't know who wrote it.
  5. //#include "..stdafx.h"//Release模式路径
  6. #include "stdafx.h"//Debug模式路径
  7. #include "ModulVer.h"
  8. CModuleVersion::CModuleVersion()
  9. {
  10. m_pVersionInfo = NULL; // raw version info data 
  11. }
  12. //////////////////
  13. // Destroy: delete version info
  14. //
  15. CModuleVersion::~CModuleVersion()
  16. {
  17. delete [] m_pVersionInfo;
  18. }
  19. void CModuleVersion::ParseString(IN LPCSTR pSource, OUT LPSTR pTarget)
  20. {
  21. ASSERT(pSource);
  22. CString strTemp, strTemp1;
  23. strTemp = pSource;
  24. int nPos = 0, nPos2 = 0;
  25. if(-1 != strTemp.Find('"'))
  26. {
  27. nPos = strTemp.Find('"', 1);
  28. strTemp.Delete(0, 1);
  29. strTemp1 = strTemp.Left(nPos - 1);
  30. if(-1 == strTemp1.ReverseFind('.'))
  31. {
  32. strTemp1 += ".exe";
  33. }
  34. strncpy(pTarget, strTemp1, strTemp1.GetLength());
  35. return;
  36. }
  37. strTemp.MakeLower();
  38. nPos2 = strTemp.Find("rundll32.exe");
  39. if(-1 != nPos2)
  40. {
  41. strTemp.Delete(0, nPos2+13);
  42. nPos2 = -1;
  43. nPos2 = strTemp.Find(',');
  44. if(-1 != nPos2)
  45. {
  46. strncpy(pTarget, strTemp, nPos2);
  47. return;
  48. }
  49. else
  50. {
  51. strncpy(pTarget, strTemp, strTemp.GetLength());
  52. return;
  53. }
  54. }
  55. strTemp.MakeLower();
  56. nPos = strTemp.Find("rundll32");
  57. if(-1 != nPos)
  58. {
  59. strTemp.Delete(0, nPos+9);
  60. nPos2 = -1;
  61. nPos2 = strTemp.Find(',');
  62. if(-1 != nPos2)
  63. {
  64. strncpy(pTarget, strTemp, nPos2);
  65. return;
  66. }
  67. else
  68. {
  69. strncpy(pTarget, strTemp, strTemp.GetLength());
  70. return;
  71. }
  72. }
  73. nPos = strTemp.ReverseFind('\');
  74. if(-1 != nPos)
  75. {
  76. nPos2 = strTemp.Find(' ', nPos);
  77. if(-1 != nPos2)
  78. {
  79. strTemp1 = strTemp.Left(nPos2);
  80. if(-1 == strTemp1.ReverseFind('.'))
  81. {
  82. strTemp1 += ".exe";
  83. }
  84. strncpy(pTarget, strTemp1,strTemp1.GetLength());
  85. return;
  86. }
  87. else
  88. {
  89. int nPos3;
  90. nPos3 = -1;
  91. nPos3 = strTemp.Find("/", 0);
  92. if(nPos3 != -1)
  93. {
  94. strncpy(pTarget, strTemp, nPos3);
  95. }
  96. else
  97. {
  98. strncpy(pTarget, strTemp, strTemp.GetLength());
  99. }
  100. return;
  101. }
  102. }
  103. nPos = strTemp.Find(" ");
  104. if(-1 != nPos)
  105. {
  106. strncpy(pTarget, pSource, nPos);
  107. }
  108. else
  109. {
  110. strncpy(pTarget, pSource, strlen(pSource));
  111. return;
  112. }
  113. }