if (SUCCEEDED(hr))
{
IApe *pApe = 0;
// use the class object to create a new gorilla
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ Π³ΠΎΡΠΈΠ»Π»Ρ
hr = pgc->CreateApe(&pApe);
if (SUCCEEDED(hr))
{
// tell the new gorilla to eat a banana
// ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΉ Π³ΠΎΡΠΈΠ»Π»Π΅ Π΅ΡΡΡ Π±Π°Π½Π°Π½Ρ
hr = pApe->EatBanana();
pApe->Release();
}
pgc->Release();
}
return hr;
}
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° IApeClass, ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ»Ρ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ·ΠΎΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ»Π°ΡΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ
Π‘ΠΠ-ΡΠ΅ΡΠ²Π΅Ρ β ΡΡΠΎ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π‘ΠΠ-ΠΊΠ»Π°ΡΡΠΎΠ². Π‘Π΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΈΠ»ΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ (DLL), ΠΈΠ»ΠΈ Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π° Π·Π°Π³ΡΡΠ·ΠΊΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ SCM.
ΠΡΠ»ΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΊΠ°Π·Π°Π½Π° Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½Π°Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ, ΡΠΎ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π° Π±Π°Π·Π΅ DLL Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² Π°Π΄ΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ ΠΆΠ΅ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ ΡΠΊΠ°Π·Π°Π½Ρ Π²Π½Π΅ΠΏΡΠΎΡΠ΅ΡΡΠ½Π°Ρ ΠΈΠ»ΠΈ Π²Π½Π΅Ρ ΠΎΡΡΠΎΠ²Π°Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ, ΡΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Π΅ (ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°) Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». Π‘ΠΠ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ DLL-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π² ΡΡΡΡΠΎΠ³Π°ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ (surrogate processes) Ρ ΡΠ΅Π»ΡΡ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠΉ ΠΈ Π²Π½Π΅Ρ ΠΎΡΡΠΎΠ²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ³Π°ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π²Π½Π΅ΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠΉ ΠΈ Π²Π½Π΅Ρ ΠΎΡΡΠΎΠ²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ, Π±ΡΠ΄ΡΡ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π² Π³Π»Π°Π²Π΅ 6.
Π§ΡΠΎΠ±Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΌΠΎΠ³Π»ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠ»ΠΈ Π³Π΄Π΅ ΠΎΠ½ ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°Π½, Π² Π‘ΠΠ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ°Ρ CLSID Π½Π° ΡΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΉ Windows NT 5.0 ΠΈΠ»ΠΈ Π²ΡΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ NT (NT Directory). ΠΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π½ΠΎΠΉ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ , Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Ρ ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Π°Ρ ΠΈ ΠΏΡΠΎΡΠ΅Π΅. Π‘ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΡΠΏΠ΅Ρ ΠΎΠΌ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ NT ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΎ Π‘ΠΠ-ΠΊΠ»Π°ΡΡΠ°Ρ . ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π‘ΠΠ Class Store (Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π‘ΠΠ-ΠΊΠ»Π°ΡΡΠΎΠ²). Π‘ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Class Store Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° CLSID Π² ΡΠ°ΠΉΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π² ΡΠ»ΡΡΠ°Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ) ΠΈΠ»ΠΈ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ Ρ ΠΎΡΡ-ΠΈΠΌΠ΅Π½Π° (Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ). ΠΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ Π΄Π»Ρ CLSID ΡΠ΄Π΅Π»Π°Π½ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΡΡ. ΠΡΠ»ΠΈ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΡΡΠ΅ Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠΎ Π‘ΠΠ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π² Class Store ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π»Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΈΠ· Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π΄ΡΡΠ³ΡΡ Ρ ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Ρ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΠΊ Π·Π°ΠΏΡΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ Π² Class Store, ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΡΡ, ΡΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠΈΠΉΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ Class Store, ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΡΠ΅Π΅ΡΡΡΠΎΠΌ, ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ (Registry). Π Π΅Π΅ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ , Ρ ΡΠ°Π½ΡΡΠ΅ΠΉΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΊΠΎΡΠΎΡΡΡ Π‘ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ CLSID Π² ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² (Π² ΡΠ»ΡΡΠ°Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ) ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Ρ ΠΎΡΡΠΎΠ² (Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ). ΠΠΎ Windows NT 5.0 ΡΠ΅Π΅ΡΡΡ Π±ΡΠ» Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π‘ΠΠ. ΠΡΡΡΡΡΠΉ ΠΏΠΎΠΈΡΠΊ Π² ΡΠ΅Π΅ΡΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ (keys), ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΊΠΎΡΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ Π² ΡΠ΅Π΅ΡΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΡΡΠ°Π²Π΅ ΡΡΡΠΎΠΊΠΈ, ΡΠ΅Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π‘ΠΠ Π½Π° Windows NT 4.0 Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π΅Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ
HKEYLOCALMACHINE\Software\Classes
Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ
HKEYCLASSESROOT
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π‘ΠΠ Π½Π° Windows NT 5.0 ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HKEYCLASSESROOT Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ²ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ CLSID Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. ΠΠΎΠ΄ Windows NT 5.0 Π‘ΠΠ Π²Π½Π°ΡΠ°Π»Π΅ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ
HKEYCURRENTUSER\Software\Classes
ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ HKEYCLASSESROOT. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ HKLM, HKCR ΠΈ HKCU Π²ΠΌΠ΅ΡΡΠΎ HKEYLOCALMACHINE, HKEYCLASSESROOT ΠΈ HKEYCURRENTUSER , ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ[1].
Π‘ΠΠ Ρ ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΡΡΡΡ ΠΊ CLSID Π²ΡΠ΅Ρ ΠΌΠ°ΡΠΈΠ½, ΠΏΠΎΠ΄ ΠΊΠ»ΡΡΠΎΠΌ ΡΠ΅Π΅ΡΡΡΠ° HKCR\CLSID
Π Π²Π΅ΡΡΠΈΠΈ Windows NT 5.0 ΠΈΠ»ΠΈ Π²ΡΡΠ΅ Π‘ΠΠ ΠΈΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠ»Π°ΡΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ ΠΊΠ»ΡΡΠΎΠΌ HKCU\Software\Classes\CLSID
ΠΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ CLSID, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ CLSID β ΡΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡ Gorilla, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΠΉΡΡ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΌΠΎΠ³ Π±Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡ[2]:
[HKCR\CLSID\{571F1680-CC83-11d0-8C48-0080C73925BA}]
@="Gorilla"
ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Gorilla Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ CLSID Gorilla Π² ΡΠ΅Π΅ΡΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ DLL, ΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ:
[HKCR\CLSID\{571F1680-CC83-11d0-8C48-0080C73925BA}\InprocServer32]
@="C:\ServerOfTheApes.dll"
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ΄ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ:
[HKCR\CLSID\{571F1680-CC83-11d0-8C48-0080C73925BA}\LocalServer32]
@="Π‘:\ServerOfTheApes.exe"
ΠΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠ±Π΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. ΠΠ»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ProgIDFromCLSID Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡ:
[HKCR\CLSID\{571F1680-CC83-11d0-8C48-0080C73925BA}\ProgID]
@="Apes.Gorilla.1"
ΠΠ°ΠΎΠ±ΠΎΡΠΎΡ, Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ CLSIDFromProgID ΡΡΠ΅Π±ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ:
[HKCR\Apes.Gorilla.1] @="Gorilla" [HKCR\Apes.Gorilla.1\CLSID]
@="\{571F1680-CC83-11d0-8C48-0080C73925BA}
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ (ProgID) Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡΡΡ, ΡΡΠΎΠ±Ρ Π² ΡΠ΅Ρ ΡΡΠ΅Π΄Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ CLSID, ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π²ΡΠ·ΠΎΠ²Ρ Π½Π° Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ.
ΠΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ Π‘ΠΠ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΠΌΠΎΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ. ΠΠ»Ρ Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ DLL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
STDAPI DllRegisterServer(void);
STDAPI DllUnregisterServer(void);
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ STDAPI ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠΌ, ΠΈΠ½Π΄ΠΈΡΠΈΡΡΡΡΠΈΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠRESULT ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π‘ΠΠ ΠΏΠΎ Π²ΡΠ·ΠΎΠ²Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ°, ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² Class Store Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΠ° ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π½Π° ΠΌΠ°ΡΠΈΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠΎΠΌΠ΅ Class Store ΡΡΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Microsoft Transaction Server, ActiveX Code Download, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ) Π΄Π»Ρ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π½Π° Ρ ΠΎΡΡ-ΠΌΠ°ΡΠΈΠ½Π°Ρ . Π Win32 SDK Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΠΈΠ»ΠΈΡΠ° REGSVR32.EXE, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ Π΄Π΅ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π‘ΠΠ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² DllRegisterServer ΠΈ DllUnregisterServer Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΡΠ΅Π΅ΡΡΡ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ CLSID ΠΈ ProgID ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°. Π₯ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»ΡΡΠΈ, Π½Π°Π·Π²Π°Π½ΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½, ΡΠ°ΠΌΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΈ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΏΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° RegSetValueEx Π΄Π»Ρ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ ΠΈ RegDeleteKey Π΄Π»Ρ Π΄Π΅ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΡΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ Π·Π°Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Nx3 , Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ΄ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΈΠΌΠ΅Π½Π° Π²Π΅Π»ΠΈΡΠΈΠ½ ΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ:
const char *gRegTable[][3] = {
// format is { key, value name, value }
{
Β«CLSID\\{571F1680-CC83-11d0-8C48-0080C73925BA}Β», 0, Β«GorillaΒ»
},
{
"CLSID\\{571F1680-CC83-11d0-8C48-0080C73925BA}
\\InprocServer32",0, (const char*)-1
// rogue value indicating file name
// Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°
},
{
Β«CLSID\\{571F1680-CC83-11d0-8C48-0080C73925BA}\\ProgIDΒ», 0, Β«ΠΡΠ΅s.Gorilla.1Β»
},
{
Β«Apes.GorillΠ°.1Β», 0, Β«GorillaΒ»
},
{
Β«Apes.Gorilla.1\\CLSIDΒ», 0, Β«{571F1680-CC83-11d0-8C48-0080C73925BA}Β»
},
};
ΠΠΌΠ΅Ρ ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π²Π΅ΡΡΠΌΠ° Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DllRegisterServer: