02-03-2008, 11:49
|
|
|
חבר מתאריך: 14.01.05
הודעות: 176
|
|
תשובה
בתגובה להודעה מספר 1 שנכתבה על ידי jasminh שמתחילה ב "בדיקת גרסה של קבצים בתיקייה C:\WINDOWS\assembly"
לטובת מי עוד שיתקל בבעייה דומה להלן הפתרונות שאני מצאתי:
א.
קוד:
BOOL__declspec(dllexport) GetVersionDll(char *szEngineVersion)
{
BOOL bGetVersionResult = FALSE;
try
{
String ^strFullName, ^strVersion;
AssemblyName^ pReferencedAssemblies;
Assembly^ pExecutingAssembly = System::Reflection::Assembly::GetExecutingAssembly();
fo reach (pReferencedAssemblies in pExecutingAssembly->GetReferencedAssemblies() )
{
strFullName = pReferencedAssemblies->FullName;
if (strFullName->Contains(FFEngineDllName))
{int iStartVersion = strFullName->IndexOf("=") + 1;
int iEndVersion = strFullName->IndexOf(",", iStartVersion);
int iSizeVersion = iEndVersion - iStartVersion;
if (iStartVersion && iSizeVersion)
strVersion = strFullName->Substring(iStartVersion, iSizeVersion);
if (InsertString2Char(strVersion, szEngineVersion))
bGetVersionResult = TRUE;
break;
}
}
delete pReferencedAssemblies;
pReferencedAssemblies = nullptr;
delete pExecutingAssembly;
pExecutingAssembly = nullptr;
delete strFullName;
strFullName = nullptr;
delete strVersion;
strVersion = nullptr;
}
catch (...){}
return bGetVersionResult;
}
ב. קבצי ה- dll בתוך תיקיית C:\WINDOWS\assembly
נמצאים תחת תיקיית Gac_msil לפי שם מספר גרסה ו - key ב- registry
כפי שניתן לראות עם TOTALCMD.EXE
בהצלחה,
יסמין
|