//取得所有的文件版本信息,各信息间以\n分隔 CString HFileVersion::GetFullVersion() { CString strRet; /* szRet = "文件版本: " + GetFileVersion() + "\n"; szRet += "说明: " + GetFileDescription() +"\n"; szRet += "版权: " + GetLegalCopyright() +"\n"; szRet += "备注: " + GetComments() + "\n"; szRet += "产品版本: " + GetProductVersion() +"\n"; szRet += "产品名称: " + GetProductName() +"\n"; szRet += "个人用内部版本说明: " + GetPrivateBuild() +"\n"; szRet += "公司名称: " + GetCompanyName() +"\n"; szRet += "合法商标: " + GetLegalTrademarks() +"\n"; szRet += "内部名称: " + GetInternalName() +"\n"; szRet += "特殊内部版本说明: " + GetSpecialBuild() +"\n"; szRet += "源文件名: " + GetOriginalFilename() +"\n"; */ strRet = "FileVersion: " + GetFileVersion() + "\n"; strRet += "FileDescription: " + GetFileDescription() +"\n"; strRet += "CopyRight: " + GetLegalCopyright() +"\n"; strRet += "Comments: " + GetComments() + "\n"; strRet += "ProductVersion: " + GetProductVersion() +"\n"; strRet += "ProductName: " + GetProductName() +"\n"; strRet += "PrivateBuild: " + GetPrivateBuild() +"\n"; strRet += "CompanyName: " + GetCompanyName() +"\n"; strRet += "TradeMarks: " + GetLegalTrademarks() +"\n"; strRet += "InternalName: " + GetInternalName() +"\n"; strRet += "SpecialBuild: " + GetSpecialBuild() +"\n"; strRet += "OriginalFileName: " + GetOriginalFilename() +"\n"; return strRet; }
static void GetObjectDescription(DBEVENTINFO *dbei, TCHAR* str, int cbStr) { switch(dbei->eventType) { case EVENTTYPE_MESSAGE: GetMessageDescription(dbei, str, cbStr); break; case EVENTTYPE_URL: GetUrlDescription(dbei, str, cbStr); break; case EVENTTYPE_FILE: GetFileDescription(dbei, str, cbStr); break; default: DBEVENTTYPEDESCR *et = (DBEVENTTYPEDESCR*)CallService(MS_DB_EVENT_GETTYPE, (WPARAM)dbei->szModule, (LPARAM)dbei->eventType); if (et && (et->flags & DETF_HISTORY)) GetMessageDescription(dbei, str, cbStr); else *str = 0; } }
BOOL CProcessTool::GetProcessExtendInfo(PSYSTEM_PROCESS_INFORMATION pSPI,PPROCESS_EXTEND_INFO pExtendInfo) { HANDLE hProcess; TCHAR szBuf[2048] ={0}; memset(pExtendInfo,0,sizeof(PPROCESS_EXTEND_INFO)); hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pSPI->UniqueProcessId); if(hProcess==NULL)return FALSE; //Get Exe Path,Description,Company Name if(GetModuleFileNameEx(hProcess,NULL,szBuf,MAX_PATH)!=0) { pExtendInfo->strExeFilePath = szBuf; GetFileDescription(szBuf,pExtendInfo->strDescription, pExtendInfo->strCompanyName); } //Get Virtual Memory Size PROCESS_MEMORY_COUNTERS pmc; if(GetProcessMemoryInfo(hProcess,&pmc,sizeof(PROCESS_MEMORY_COUNTERS))) { pExtendInfo->dwVirtualMemorySize = pmc.PagefileUsage; } //Get Parent Process File Path HANDLE hParent =NULL; hParent = OpenProcess(PROCESS_VM_READ|PROCESS_QUERY_INFORMATION, FALSE,pSPI->InheritedFromUniqueProcessId); if(hParent!=NULL) { memset(szBuf,0,sizeof(szBuf)); if(GetModuleFileNameEx(hParent,NULL,szBuf,MAX_PATH)!=0) { pExtendInfo->strParentFilePath = szBuf; } } //Get Username if(WinStationGetProcessSid&&CachedGetUserFromSid) { wchar_t wcsUserName[100]={0}; char mbsUserName[100]={0}; size_t NumOfCharConverted; DWORD dwSize = sizeof(szBuf)/sizeof(TCHAR); FILETIME ftStartTime; CopyMemory(&ftStartTime,&pSPI->CreateTime,sizeof(FILETIME)); if(WinStationGetProcessSid(NULL,pSPI->UniqueProcessId,ftStartTime, (LPBYTE)szBuf,&dwSize)) { CachedGetUserFromSid(szBuf,wcsUserName,&dwSize); #ifdef _UNICODE pExtendInfo->strUserName = wcsUserName; #else wcstombs_s(&NumOfCharConverted,mbsUserName,wcsUserName, sizeof(mbsUserName)); pExtendInfo->strUserName = mbsUserName; #endif } } //Get Start time { SYSTEMTIME st; ZeroMemory(&st,sizeof(SYSTEMTIME)); FileTimeToSystemTime((FILETIME *)&pSPI->CreateTime,&st); CTime Time(st); Time +=CTimeSpan(0,8,0,0); pExtendInfo->strStartTime = Time.Format(TEXT("%Y-%m-%d %H:%M:%S")); } return TRUE; }
/// Retrieves the file description information in the requested language id. /// String version. [VH 2005-04-03] // tstring TModuleVersionInfo::GetFileDescription(uint lang) {LPCTSTR v = _T(""); E = GetFileDescription(v, lang); return v;}