Newsgroup: it.comp.lang.visual-basic
Titolo: Finalmente ce l'ho fatta e ora svelo come....

Negli ultimi giorni avrete seguito sicuramente il mio 3d riaguardo ad un 
problema che sembrava banale ma a giudicare dalle risposte fuorvianti che ho 
ricevuto probabilmente non lo era poi molto.
Avevo chiesto in sintesi perche', avendo scritto una semplice ocx, e 
richiamandola da una pagina html con un piccolo vbscript, questa funzionasse 
solo sul mio pc locale, ma se lo spostavo su un disco di rete non andava 
piu', avevo quindi chiesto se qualcuno sapeva dirmi come avrei dovuto 
modificare il codice della mia ocx per far si che cio' non avvenisse. Una 
semplice domanda che prevedeva una semplice risposta, che non e' arrivata, e 
ora la voglio postare qui', cosi' se un'altro dovesse trovarsi nella mia 
stessa condizione potra' prendere spunto per risolvere il problema.
In poche parole la parola magica e' IObjectSafety !!!!
Questa interfaccia se implementata all'interno dell'ActiveX fa in modo che 
IE la veda contrassegnata come sicura! Non ci credete?
Bene prendete di nuovo l'esempio che proponevo nel mio post precedente, ma 
ora arricchiamolo con l'implementazione di IObjectSafety.
Basta mettere tra le dichiarazioni quanto segue:
Implements IObjectSafety
e poi aggiungiamo queste due Sub:
Private Sub IObjectSafety_GetInterfaceSafetyOptions(ByVal riid As Long, 
pdwSupportedOptions As Long, pdwEnabledOptions As Long)
      ' Qui non metto nienete, tanto e' solo una prova ma IObjectSafety 
questa Sub deve esserci perforza quando lo implemento
End Sub
Private Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As Long, 
ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long)
        ' Idem come sopra
End Sub
Ora a me funziona tutto alla perfezione!!!!
Spero di aver aiutato qualcuno e di non aver urtato chi queste cose le sa 
molto meglio di me ;-)
Ciao a tutti, alla prossima. 

 ha scritto nel messaggio
news:d45tte$g92$1...@newsreader.mailgate.org...

Ottimo, son contento per te!
Non credo che nessuno sia stato "urtato", vai tranquillo!
Per quanto mi riguarda... buono a sapersi, anche se dubito che avrň mai questa
esigenza.
Perň la cosa mi fa sorgere il dubbio che nei tentativi precedenti tu non abbia
poi effettivamente reimpostato la protezione di IE sul livello piů basso (come
avevo suggerito).
Se il tuo oggetto non implementa questa interfaccia, IE non lo considera
"sicuro" (e non permette di crearne istanze) solo se il livello di protezione č
piů alto, altrimenti se ne dovrebbe fottere altamente... infatti da me
funzionava senza IObjectSafety!
Mah...
Bye
Raf

 avevo suggerito).
La colpa e' mia, sono stato molto caotico nel porre il problema, avevo gia' 
capito che si poteva risolvere il problema abbassando le protezioni di IE, 
ma non era quello che volevo, la mia domanda voleva sapere come modificare 
la ocx in modo da poter funzionare senza tale espediente, ma non sono 
riuscito a farmi capire, mi dispiace :-p
Comunque ti ringrazio molto. Ciao, alla prossima.

 funzionava senza IObjectSafety!
Quindi uno può buttare su internet qualsiasi porcheria purchè implementi
IObjectSafety?
Che razza di sistema di sicurezza sarebbe? :)
Ciao
--
Reporting tool: 
http://www.neodatatype.net
Qualunque mentecatto può scrivere codice che un computer possa capire.
I buoni programmatori scrivono codice che gli uomini possano capire.
[Martin Fowler]

 ha scritto nel messaggio
news:d4616r$kdp$1...@newsreader.mailgate.org...

Ecco, se l'avessimo chiarito subito... Ok, ti serva come promemoria:
la prossima volta se riuscirai ad essere meno "caotico" probabilmente la
"semplice risposta" a "semplice domanda" ti arriverà prima ;-)
Ciao
Raf

 Che razza di sistema di sicurezza sarebbe? :)
Ovviamnete sul tuo pc devi essere tu a registrare la ocx, e per di piu' devi 
avere anche objsafe.tlb altrimenti nisba, se tu lanci un setup vuoldire che 
ti fidi di chi ti sta dando il software no?
Ciao. 

 Che razza di sistema di sicurezza sarebbe? :)
Infatti me lo sto appena chiedendo... :|
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello...
(A. Celentano)
Per rispondermi in privato, prima togli l'immondizia dalla testa.

 Che razza di sistema di sicurezza sarebbe? :)
e' quella grande figata che si chiama "Finestre" :-P
-- 
ciao, hal

Davide D'Amico wrote:
in realtà prendi una scorciatoia...fra gli innumerevoli link dati in questi
giorni c'era pure quello di un sdk che conteneva tutti i programmi
per fare e certificare un activex
In realta ci "appiccichi" quel pezzetto di codice e speri che vada!
Finchè va per carità!
Se casomai ti interessasse approfondire la cosa
un altro link!,....che ho trovato interessantissimo....
http://blogs.msdn.com/ajma/articles/213868.aspx
Va detto che molto probabilmente come riportato in un blog che avevo
letto....
sviluppare il medesimo "hello word" in C++ o VB6 comporta il fatto che
alcune interfacce vengono allegramente cassate da vb6
e una dll activex non è esattamente la medesima cosa in C o vb6
l'articolo di riferimento in casa M$ penso sia
http://support.microsoft.com/kb/q182598/
Saluti!
Buon Lavoro!
-- 
------------------------------------------------
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 e una dll activex non č esattamente la medesima cosa in C o vb6
Sono d'accordo, ma ti assicuro che quello che sto cercando di fare e' solo 
una cosa "propedeutica", mi serviva per iniziare a capire, pian piano 
raffinero' le mie conoscenze in merito.
Ciao e grazie.

 ha scritto nel messaggio 
news:d45tte$g92$1...@newsreader.mailgate.org...
[VARIE]
Per curiosità, come hai scoperto come rendere "sicura" un OCX?
No perchè a quel punto che senso ha la cosa? cioè se il primo programmatore 
di troian, virus, spyware, venendo qui sul NG scopre la cosa di conseguenza 
sa come fare e implementa questa interfaccia,quindi a cosa serve?
Non so se mi sono spiegato...
-- 
"Tutta la droga del mondo non vale un grammo della mia adrenalina"
Lorenzo Cherubini alias Jovanotti
Per bypassare i filtri antispam scrivi nel testo del messaggio "AIEIE"
MasterDavidex - David Ruscelli
ICQ 223258511 

 "semplice risposta" a "semplice domanda" ti arriverà prima ;-)
Sì... in questo caso non gli è proprio arrivata però la risposta....

 Non so se mi sono spiegato...
Non e' proprio cosi' !!!
Questa cosa, per funzionare, ha bisogno della "complicità" 
dell'amministratore del PC, dato che deve di suo pugno registrare la ocx o 
dll che sia, una semplice pagina web non puo' essere dannosa se chi 
amministra il PC ha un minimo di buon senso.
Se poi vogliamo parlare del fatto che in una pagina web si puo' iniettare 
codice codificato in base64, e con uno script java alla fine, che a ritroso 
riconverte l'eseguibile una volta che viene considerato locale sul pc e lo 
manda in esecuzione a tua totale insaputo... beh questa e' un'altra storia 
:-D
Comunque, qui non si sta parlando di sicurezza, quella va discussa in un' 
altra sede, e li direi che e' meglio non usare IE magari....
Ciao. 

 Ciao.
Io lo uso assieme a NOD antivirus e Microsoft antispyware e mi trovo molto 
bene


 automatico, ma è così solo il tuo caso?
se degli activex si potessero registrare per conto loro, a prescindere dalle
policies, quante macchine sarebbero ancora vive in tutta la rete ?

 policies, quante macchine sarebbero ancora vive in tutta la rete ?
se invece di macchine morte ti accontenti di quelle malate,
ce ne sono in ogni caso parecchie, almeno a giudicare dal
log del mio snort.
ovviamente ci pensa interdet exploder a registrare gli activex,
per cui, di fatto, se si vuole scaricare un activex se ne deve
affidare l'autore/distributore esaminandone la firma digitale ed
il relativo certificato: ha ragione l'OP quando parla di
complicita' (piu' o meno consapevole) da parte dell'utente.
l'activex in questione puo' benissimo implementare IObjectSafety, 
mentendo spudoratamente, ed azzerare la tabella delle partizioni
alla faccia della sicurezza :-(
-- 
ciao, hal

 complicita' (piu' o meno consapevole) da parte dell'utente.
appunto, una policy.
per quanto inconscia, e spesso inconscente :)
ciao, a.