Newsgroup: it.comp.dotnet
Titolo: sapere se una applicazione gira a 32 o 64

Ciao a tutti,
sto scrivendo una applicazione VB2008, che girera' sia su sistemi 32 che 64 
bit.
L'applicazione deve  fare delle operazioni leggermente differenti (chiamare 
dei filtri DirectShow) se sta girando a 32 o 64 bit.
Posso sapere, in runtime, che "piega" ha preso l'applicazione stessa? Posso 
sapere come sta girando?
Grazie e ciao... Maurizio 
 


IntPtr.Size restituisce 4 se è a 32 bit oppure 8 se gira a 64 bit
 
-- 
Raffaele Rialdi  
http://www.iamraf.net
 
Weblog: 
http://blogs.ugidotnet.org/raffaele
 
Microsoft MVP profile 
https://mvp.support.microsoft.com/profile/raffaele
 
UGIdotNET - 
http://www.ugidotnet.org/
 
 
 

Grazie Raffaele per la risposta.
Semplice, conciso, efficace :-)

 Posso sapere come sta girando [32 o 64 bit]?
 
http://msdn.microsoft.com/en-us/library/system.environment.is64bitoperatingsystem.aspx
 
http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx
 
 
HTH,
 
-LV
 


http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx
 
...
Interessante, anche se queste proprieta' sono disponibili dal FW 4, quindi 
nel mio caso specifico, non utilizzabili.
Buono comunque a sapersi.
 

 nel mio caso specifico, non utilizzabili.
 
Hai ragione, scusa, me ne sono accorto dopo...
 
Occhio pero' che , a quanto leggo su StackOverflow, la soluzione proposta da 
Raf per fwk precedenti al 4 e' da prendere con alcune cautele: 
http://stackoverflow.com/questions/336633/how-to-detect-windows-64-bit-platform-with-net
 
 
-LV
 

 -LV
 
Ottimo link.
Da quanto capisco nel link, il caso in cui non funziona è relativo solo 
ad una applicazione che gira a 32 bit su un OS a 64 bit che ha il 
framework.net
 a 32 bit installato.
Di fatto però in questo caso l'applicazione sta girando a 32 bit e 
quindi il sistema 'size' funziona perché dice come sta girando il 
processo.
 
Se però a vbMizio serve sapere se l'OS è a 64 bit e l'applicazione 
_potrebbe_ girare a 64 bit, allora ovviamente non va bene.
 
Capisco male? Non ho modo di fare prove nell'immediato...


 Capisco male? Non ho modo di fare prove nell'immediato...
 
Direi che i dettagli (ed eventuali semplificazioni) dipendono, come anche tu 
noti, dallo specifico dei requisiti di vbMizio.  Fra l'altro non mi e' mai 
capitato di avere bisogno di una cosa del genere (tanto meno in .Net), ma mi 
e' capitato di avere configurazioni di build diverse (ed eventuali direttive 
preprocessore nel codice) a seconda della piattaforma di destinazione.
 
Sarei interessato a sentire quali sono in effetti i requisiti di vbMizio, 
almeno il linea di massima: ovvero qual e' "il problema a monte".
 
-LV
 
 

....
Sarei interessato a sentire quali sono in effetti i requisiti di vbMizio,
almeno il linea di massima: ovvero qual e' "il problema a monte".
....
Eccomi eccomi, sono ben felice di rispondere a tutti e due (anche se mi 
accodo al messaggio di Ludovico).
La mia specifica necessita' era quella di sapere se l'applicazione sta 
girando a 64 bit o a 32. Questo perche' viene compilata per "Any CPU", ma in 
base al tipo di esecuzione deve caricare dei filtri directshow piuttosto che 
altri.
Dal momento che questi filtri li devo "forzare" io, mi serve di sapere quali 
devo chiamare, dato che alcuni sono per 32 bit, altri per 64; in questo 
caso, quindi, mi serve di sapere il modo di esecuzione dell'applicazione, e 
non dell'ambiente del SO.
Spero di essere stato chiaro.
 

 Spero di essere stato chiaro.
 
In questo caso 'size' dovrebbe essere sufficiente.
 
Potresti cadere nel caso in cui sei su un OS a 64 bit ma la tua app 
viene caricata a 32 bit perché c'è la versione x86 del 
fx.net
 ma alla 
fine poco importa per il tuo scopo.
 
Ad ogni modo con una manciata di test su delle VM dovresti verificare 
subito se ti funziona a dovere.
