n° 219
Novembre 2017
Dicembre 17, 2017, 11:53:39 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: [RISOLTO] Estrapolare marca e modello del monitor di un computer remoto  (Letto 997 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
DavideV
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 7


Mostra profilo E-mail
« inserita:: Maggio 05, 2017, 02:06:55 »

Buongiorno a tutti,

per esigenze lavorative devo riuscire ad estrapolare marca, modello e numero seriale dei computer e di tutti i relativi monitor della palazzina dove lavoro (circa 150 macchine). Siamo tutti loggati allo stesso dominio tramite Active Directory, però io non ho i privilegi di amministratore nel dominio quindi l'utilizzo di PowerShell mi è precluso, così come tentare di leggere i valori dai registri di sistema delle macchine remote.

Sto tentando la strada delle classi WMI, ma sebbene per i computer mi sia bastato interrogare le classi Win32_ComputerSystem e Win32_BIOS, estrapolare i dati dai monitor si sta rilevando un bagno di sangue perché la classe Win32_DesktopMonitor non resistituisce nessun valore realmente utile ma si limita a indicare "Standard Monitor", "Generic PnP Device" eccetera e anche Win32_PNPEntity si comporta allo stesso modo.

La cosa bella è che se apro il registro di sistema locale e lo confronto con la proprietà della classe Win32_PNPEntity, il percorso del device è lo stesso identico! Nel registro di sistema però esiste la subkey "DeviceParameter" che possiede tutto quello che mi serve (cioè la chiave EDID), mentre nelle classi WMI direttamente accessibile tramite C# sembra di no.

Alla fine l'unica classe che mi è sembrato si possa utilitzzare è WMIMonitorID, col problema che non sembra essere utilizzabile in C#.

Qualcuno sa indicarmi una strada?

Grazie!
Davide.
Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #1 inserita:: Maggio 05, 2017, 05:04:49 »

Qualcosa del genere

Codice:
            try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\WMI",
                    "SELECT * FROM WmiMonitorID");

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("WmiMonitorID instance");
                    Console.WriteLine("-----------------------------------");
                    //Console.WriteLine("Active: {0}", queryObj["Active"]);
                    Console.WriteLine("InstanceName: {0}", queryObj["InstanceName"]);

                    dynamic snid = queryObj["SerialNumberID"];
                    byte[] snBytes = new byte[snid.Length * sizeof(ushort)];
                    Buffer.BlockCopy(snid, 0, snBytes, 0, snBytes.Length);
                    string sn = Encoding.Unicode.GetString(snBytes);

                    Console.WriteLine("SerialNumberID: {0}", sn);
                    Console.WriteLine("YearOfManufacture: {0}", queryObj["YearOfManufacture"]);
                    dynamic code = queryObj["ProductCodeID"];
                    string pcid = "";
                    for (int i = 0; i < code.Length; i++)
                        pcid = pcid + Char.ConvertFromUtf32(code[i]);

                    Console.WriteLine("ProductCodeID: " + pcid);
                }
            }
            catch (ManagementException e)
            {
                Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
            }
Registrato
DavideV
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 7


Mostra profilo E-mail
« Risposta #2 inserita:: Maggio 05, 2017, 08:45:32 »

Magari fosse così semplice  Triste

Ci avevo già provato ma solleva un'eccezione nel momento in cui provo a iterare sull'enumeratore di tipo ManagementObject "classe non valida".

EDIT: ah no, io ho cercato in root\cimv2! Appena posso provo!!
Registrato
DavideV
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 7


Mostra profilo E-mail
« Risposta #3 inserita:: Maggio 05, 2017, 09:43:37 »

Funziona!

Due giorni di mal di testa e cercavo nel posto sbagliato.

Grazie mille!
Registrato
oregon
Jr. Member
**

Karma: +22/-6
Scollegato Scollegato

Messaggi: 239


Mostra profilo
« Risposta #4 inserita:: Maggio 05, 2017, 10:32:09 »

Di nulla ...
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines