Newsgroup: it.comp.lang.visual-basic
Titolo: Registry e registrazioni di ocx doppie

Premetto che la mia applicazione utilizza un ocx sviluppato internamente con
compatibilità di progetto e che il client è un windows2000pro Italiano.
Ho avuto problemi con la registrazione di un componente da un cliente:
all'apertura di alcune finestre mi appariva il messaggio "Run-time error
'-
2147417848
 (80010108)': Method '~' of object '~' failed" documentato su
MSDN come un bug di Microsoft.
Ma di baco vero non si trattava, era infatti un componente non registrato.
E' bastato loggarsi come Administrator Locale (anzichè come utente del
gruppo Users), registrare i componenti e tutto si è risolto.
Non contento ho effettuato una ricerca nel registry del pc utilizzato per
sviluppare l'applicazione e quello dell'utente (fetente :-) ) scoprendo
alcune differenze:
In particolare sembra (ma su internet non sono stato capace di trovare nulla
di utile) che quel componente sia stato registrato più volte (o non
deregistrato correttamente), ma non conosco il significato della chiave
TypeLib in cui sono presenti queste differenze (il carattere # indica le
righe identiche).
Mio registry
---------------------------------------
  #
HKEY_CLASSES_ROOT\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462696}\InprocServer3
2
  #
HKEY_CLASSES_ROOT\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462696}\ToolboxBitmap
32
  #
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\13f.0\0\win
32
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg3
2\OpenSaveMRU\ocx
  #
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462
696}\InprocServer32
  #
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462
696}\ToolboxBitmap32
  #
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\13f.0\0\win32
HKEY_USERS\S-1-5-21-842925246-1343024091-1957994488-1004\Software\Microsoft\
Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\ocx
Registry dell'utente
---------------------------------------
 #
HKEY_CLASSES_ROOT\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462696}\InprocServer3
2
 #
HKEY_CLASSES_ROOT\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462696}\ToolboxBitmap
32
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\129.0\0\win
32
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\130.0\0\win
32
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\133.0\0\win
32
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\139.0\0\win
32
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\13a.0\0\win
32
 #
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\13f.0\0\win
32
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\a1.0\0\win3
2
HKEY_CLASSES_ROOT\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C462696}\dc.0\0\win3
2
 #
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462
696}\InprocServer32
 #
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A8A0698A-2038-11D4-AE45-00C06C462
696}\ToolboxBitmap32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\129.0\0\win32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\130.0\0\win32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\133.0\0\win32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\139.0\0\win32
 #
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\13f.0\0\win32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\a1.0\0\win32
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{A8A0698F-2038-11D4-AE45-00C06C4
62696}\dc.0\0\win32
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs
La mia ipotesi è che sia stato copiato il nuovo componente, deregistrato (in
realtà non avvenuta) e registrato, anzichè deregistrare il componente
vecchio, copiare il nuovo e registrarlo.
Grazie un miliardo!!!!
--
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo
                         zMatteo
.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo
AntiSpam: rimuovere i ^ dall'indirizzo di e-mail

 compatibilità di progetto e che il client è un windows2000pro Italiano.
[SNIP]
Compatibilita' di progetto o binaria?
Nel secondo caso, sei garantito che il CLSID del componente rimane sempre lo
stesso, quindi sostituendolo e registrandolo ripetutamente, anche senza
deregistrarlo prima, dovrebbe rimanere sempre univoco nel registro...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown


Compatibilita' di progetto!

 ha scritto nel messaggio
news:XseJjr#4CHA...@DNS2.edpsistem.it...

Questa modalita', per quanto ne so, e' utile solo in fase di debug del
componente, per non essere costretti a rimpiazzare i riferimenti nelle
applicazioni client, ma in compilazione definitiva andrebbe sostituita da
quella binaria.
Prova...
