विंडोज एक्सई/डीएल में संग्रहीत संस्करण जानकारी रनटाइम पर कैसे पुनर्प्राप्त करें? यह जानकारी संसाधन फ़ाइल का उपयोग कर मैन्युअल रूप से सेट है।मैं विंडोज एक्सई या डीएलएल के संस्करण संख्या को कैसे प्राप्त कर सकता हूं?
उत्तर
यहाँ एक सी ++ यह कर, मानक Windows API कार्यों का उपयोग करने का तरीका है:
try
{
TCHAR szFileName[ MAX_PATH ];
if(!::GetModuleFileName(0, szFileName, MAX_PATH))
throw __LINE__;
DWORD nParam;
DWORD nVersionSize = ::GetFileVersionInfoSize(szFileName, &nParam);
if(!nVersionSize)
throw __LINE__;
HANDLE hMem = ::GetProcessHeap();
if(!hMem)
throw __LINE__;
LPVOID lpVersionData = ::HeapAlloc(hMem, 0, nVersionSize);
if(!lpVersionData)
throw __LINE__;
if(!::GetFileVersionInfo(szFileName, 0, nVersionSize, lpVersionData))
throw __LINE__;
LPVOID pVersionInfo;
UINT nSize;
if(!::VerQueryValue(lpVersionData, _T("\\"), &pVersionInfo, &nSize))
throw __LINE__;
VS_FIXEDFILEINFO *pVSInfo = (VS_FIXEDFILEINFO *)pVersionInfo;
CString strVersion;
strVersion.Format(_T(" version %i.%i.%i.%i"),
pVSInfo->dwProductVersionMS >> 16,
pVSInfo->dwProductVersionMS & 0xFFFF,
pVSInfo->dwProductVersionLS >> 16,
pVSInfo->dwProductVersionLS & 0xFFFF
);
GetDlgItem(IDC_ABOUT_VERSION)->SetWindowText(strAppName + strVersion);
if(!HeapFree(hMem, 0, lpVersionData))
throw __LINE__;
}
catch(int err)
{
ASSERT(!err); // always break on debug builds to inspect error codes and such
DWORD dwErr = ::GetLastError();
// handle memory cleanup...
}
ध्यान दें कि पकड़ हिस्सा विशुद्ध रूप से शैक्षिक है - एक असली स्थिति में क्या तुम करोगी ठीक से स्मृति आवंटन के बाद सफाई और वास्तव में त्रुटि कोड का उपयोग करें!
वैलेंटाइन का जवाब सही है, लेकिन एक स्मृति रिसाव की संभावना के बारे में टिप्पणीकार प्लिंथ की चेतावनी नोट करें।
मुझे यह भी यकीन नहीं है कि आप इस दिन और उम्र में हेपअलोक का उपयोग क्यों करेंगे।
यहां एक स्निपेट है जो आईएमएचओ एक सुरक्षित और क्लीनर तरीका है, वही काम करने के लिए नया और boost :: shared_array का उपयोग करता है। @ "ग
System.Reflection.Assembly.LoadFile (:: \ windows \ माइक्रोसॉफ्ट
#include <boost/shared_array.hpp>
//.....
DWORD dwHandle;
DWORD dwFileVersionInfoSize = GetFileVersionInfoSize((LPTSTR)lpszFileName, &dwHandle);
if (!dwFileVersionInfoSize)
return FALSE;
// ensure our data will be deleted
boost::shared_array<BYTE> data(new BYTE[dwFileVersionInfoSize]);
LPVOID const lpData = data.get();
//party on with lpData....
यहाँ एक डेल्फी 7 संस्करण है:
uses Windows, SysUtils;
function GetEXEVersion(exename: string; const Fmt : string = '%d.%d.%d.%d'): string;
{
credit to [email protected]
(http://martinstoeckli.ch/delphi/delphi.html#AppVersion)
}
var
iBufferSize, iDummy : dword;
pBuffer, pFileInfo : Pointer;
iVer : array[1..4] of word;
begin
Result := '';
iBufferSize := GetFileVersionInfoSize(PChar(exename), iDummy);
if iBufferSize > 0 then begin
GetMem(pBuffer, iBufferSize);
try
GetFileVersionInfo(PChar(exename), 0, iBufferSize, pBuffer);
VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
finally FreeMem(pBuffer);
end;
Result := Format(Fmt, [iVer[1],iVer[2],iVer[3],iVer[4]]);
end;
end;
.NET विधानसभाओं जांच करने के लिए सी # में,। नेट \ Framework \ v2.0.50727 \ system.data.dll ") getName() Version.ToString()।।
- 1. मैं विंडोज स्टोर ऐप में निष्पादन असेंबली संस्करण जानकारी कैसे प्राप्त कर सकता हूं?
- 2. मैं निष्पादन असेंबली संस्करण कैसे प्राप्त कर सकता हूं?
- 3. क्या मैं जेवीएम में डीएलएल इंजेक्ट कर सकता हूं और जेएनआईएनएनवी प्राप्त कर सकता हूं?
- 4. मैं अपने एमईएफ प्लगइन वाले प्रत्येक डीएलएल का संस्करण संख्या कैसे प्राप्त करूं?
- 5. मैं अपने कंप्यूटर पर स्थापित विंडोज एसडीके के संस्करण को कैसे निर्धारित कर सकता हूं?
- 6. मैं डब्ल्यूएमआई का उपयोग कर विंडोज कंप्यूटर के एसआईडी को कैसे प्राप्त कर सकता हूं?
- 7. विंडोज रजिस्ट्री से आईई संस्करण संख्या कैसे प्राप्त करें?
- 8. मैं मॉनिटर जानकारी कैसे प्राप्त कर सकता हूं?
- 9. मैं कल के एनएसडीएटी को कैसे प्राप्त कर सकता हूं
- 10. मैं उच्चतम संस्करण संख्या के साथ फ़ाइल नाम का चयन कैसे कर सकता हूं?
- 11. मैं एक असेंबली डीएलएल के प्रोसेसर आर्किटेक्चर कैसे प्राप्त कर सकता हूं?
- 12. मैं प्रतिनिधि कैसे प्राप्त कर सकता हूं?
- 13. संस्करण के बावजूद मैं डीएलएल का संदर्भ कैसे दे सकता हूं?
- 14. मैं कैसे निर्धारित कर सकता हूं अंक भी संख्या है?
- 15. जावाएफएक्स का संस्करण संख्या कैसे प्राप्त करें?
- 16. मैं विंडोज 8 पर पर्ल कैसे स्थापित कर सकता हूं?
- 17. मैं पीडीओ के साथ हटाई गई पंक्तियों की संख्या कैसे प्राप्त कर सकता हूं?
- 18. मैं पायथन में यादृच्छिक संख्या कैसे उत्पन्न कर सकता हूं?
- 19. मैं निर्देशिका में फ़ाइलों की संख्या को कुशलता से कैसे प्राप्त कर सकता हूं?
- 20. मैं वीबी 6 ऐप से विंडोज संस्करण कैसे निर्धारित कर सकता हूं?
- 21. मैं विंडोज क्लिपबोर्ड पर कॉपी करने के लिए स्क्रिप्ट का आउटपुट कैसे प्राप्त कर सकता हूं?
- 22. पायथन, मैं gif फ्रेम कैसे प्राप्त कर सकता हूं
- 23. मैं सिस्टम को कैसे प्राप्त कर सकता हूं। Windows.Controls.Primitive.PopupRoot?
- 24. मैं Win32 असेंबली को अनइंस्टॉल कैसे कर सकता हूं और WinSxS को साफ़ कर सकता हूं?
- 25. मैं पीएचपीएसटॉर्म में PHP संस्करण कैसे सेट कर सकता हूं?
- 26. विंडोज फोन के वर्तमान ओएस संस्करण को कैसे प्राप्त करें?
- 27. मैं जेडीके संस्करण ग्रहण का उपयोग कैसे कर सकता हूं?
- 28. मैं सिस्टम ड्राइव अक्षर कैसे प्राप्त कर सकता हूं?
- 29. मैं सी # में विंडोज कुंजी कैसे अक्षम कर सकता हूं?
- 30. विंडोज डीएलएल संस्करण डंप करने के लिए कमांड लाइन उपकरण?
यदि आपके कॉल के बाद फेंक दिया गया है :: हेपअलोक, यह स्मृति को रिसाव करेगा। – plinth