CheckReg.cpp
上传用户:bjlvip
上传日期:2010-02-08
资源大小:744k
文件大小:1k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // Don't forget to add version.lib to the linker list of import libraries.
  2. #include <windows.h>
  3. #include <iostream.h>
  4. int main(int argc, char* argv[])
  5. {
  6. if(argc < 2)
  7. {
  8. cout << "A file name is required." << endl;
  9. return E_FAIL;
  10. }
  11. cout << "Testing " << argv[1] << endl;
  12. DWORD dwhandle;
  13. DWORD size = GetFileVersionInfoSize(argv[1], &dwhandle);
  14. if(size == 0)
  15. {
  16. cout << "GetFileVersionInfoSize failed." << endl;
  17. return E_FAIL;
  18. }
  19. void* pData = new BYTE[size];
  20. BOOL ret = GetFileVersionInfo(argv[1], 0, size, pData);
  21. if(ret == 0)
  22. {
  23. cout << "GetFileVersionInfo failed." << endl;
  24. return E_FAIL;
  25. }
  26. DWORD* pBuffer;
  27. UINT length = 0;
  28. ret = VerQueryValue(pData, "\VarFileInfo\Translation", (void**)&pBuffer, &length);
  29. if(ret == 0)
  30. {
  31. cout << "VerQueryValue failed." << endl;
  32. return E_FAIL;
  33. }
  34. char pString[256];
  35.     wsprintf(pString, "\StringFileInfo\%04hX%04hX\OLESelfRegister", LOWORD(*pBuffer), HIWORD(*pBuffer));
  36. cout << "Looking for " << pString << endl;
  37.     ret = VerQueryValue(pData, pString, (void**)&pBuffer, &length);
  38. if(ret == 0)
  39. cout << "This is not a self-registering component." << endl;
  40. else
  41. cout << "This is a self-registering component." << endl;
  42. delete pData;
  43. return ret;
  44. }