Cum să detecteze platforma executarea unui proces utilizând VC ++, VC # și VB.NET


INTRODUCERE


Acest articol descrie un exemplu de cod Framework într-un singur care este disponibil pentru descărcare. Eșantion de cod demonstrează următoarele activități de detectare de platformă:
  • Detectare numele de sistemul de operare curent. De exemplu, detectează că se execută Microsoft Windows 7 Enterprise.
  • Detectare versiunea curentă a sistemului de operare. De exemplu, detectează că se execută Microsoft Windows NT 6.1.7600.0.
  • Determinați dacă sistemul de operare curent este un sistem de operare de 64 de biți.
  • Determinați dacă procesul curent este un proces de 64 de biți.
  • Determinați dacă un proces arbitrar care se execută pe sistem este 64 de biți.

Dificultate

Informații despre Descărcare

Pentru a descărca acest exemplu de cod, faceți clic pe următorul link:

Prezentare generală a tehnice

Detectare numele de sistemul de operare curent


Numele sistemului de operare pot fi detectate de proprietatea legendă a clasei Win32_Operating sistem WMI .

Notă Pentru mai multe informații despre clasa Win32_Operating sistem WMI , vizitați următorul site Web Microsoft:Puteți găsi codul C++, C# și VB.NET care interoghează valoarea Win32_OperatingSystem. Legendă proprietate în funcția GetOSName de eșantion de cod. Alternativ, puteți să vă construiți șirul numele sistemului de operare utilizând GetVersionEx, GetSystemMetrics, GetProductInfoși funcții GetNativeSystemInfo .

Notă Pentru mai multe informații despre modul de a construi șirul numele sistemului de operare utilizând GetVersionEx, GetSystemMetrics, GetProductInfoși GetNativeSystemInfo funcții, vizitați următorul site Web Microsoft:
Notă Această soluție nu se pot aplica pentru versiuni de Windows mai recente decât Windows 7.

Detectare versiunea curentă a sistemului de operare

  • Cod de C++, structura OSVERSIONINFOEX care se aude de funcţia GetVersionEx conține următoarele informații:
    • Numărul de versiune majoră dwMajorVersion
    • Numărul de versiune minoră dwMinorVersion
    • Numărul de compilare dwBuildNumber
    • Numărul de versiune majoră wServicePackMajor de mai recent Service Pack
    • Numărul de versiune minoră ServicePackMinor de mai recent Service Pack
    Utilizaţi aceste numere la rapidă determina ce este sistemul de operare, dacă este instalat un anumit Service Pack. În plus, metoda OSVERSIONINFOEX.wProductType poate detecta dacă sistemul de operare este o stație de lucru, un server sau un controler de domeniu.
  • Pentru C# și cod VB.NET, proprietatea System.Environment.OSVersion returnează un obiect sistemdeoperare care conține Identificator platforma curentă și numerele de versiune.

    Notă Pentru mai multe informații despre proprietatea System.Environment.OSVersion , vizitați următorul site Web Microsoft:Notă Pentru mai multe informații despre clasa sistemdeoperare , vizitați următorul site Web Microsoft:Puteţi utiliza aceste numere pentru a determina rapid sistemul de operare curent și dacă este instalat un anumit Service Pack.

Determinați dacă sistemul de operare este un sistem de operare de 64 de biți


  • Cod C++, dacă un proces de execuție este un proces de 64 de biți, sistemul de operare trebuie să fie un sistem de operare de 64 de biți. Pentru a detecta prin programare dacă un program de 32 de biți se execută pe sistemul de operare 64 de biți, utilizați funcția IsWow64Process .
  • Cod de C# și VB.NET, proprietatea Environment.Is64BitOperatingSystem în .NET Framework 4 determină dacă sistemul de operare curent este un sistem de operare de 64 de biți.

    Notă Pentru mai multe informații despre proprietatea Environment.Is64BitOperatingSystem , vizitați următorul site Web Microsoft:

Determinați dacă un proces este un proces de 64 de biți

Dacă doriți să determinați dacă un proces de execuție este un proces de 64 de biți, aveți posibilitatea să executați următorul cod pentru a determina tipul Boolean valoare întoarsă utilizând VC ++ simboluri preprocesor:

BOOL Is64BitProcess(void)
{
#if defined(_WIN64)
return TRUE; // 64-bit program
#else
return FALSE;
#endif
}


De asemenea, utilizaţi proprietatea Environment.Is64BitProcess în .NET Framework 4 Dacă executați C# sau VB.NET cod.

Notă Pentru mai multe informații despre proprietatea Environment.Is64BitProcess , vizitați următorul site Web Microsoft:
Dacă doriți să detecteze dacă o aplicație arbitrare este un proces de 64 de biți, aveți nevoie pentru a detecta dacă OS bit 64-bit. Pentru aceasta, utilizați metoda IsWow64Process() împreună cu identificatorul de proces țintă.

Tehnologie categorie

  • Baza de Windows

Limbi

Această mostră de cod conține următoarele limbaje de programare.
LimbăNume de proiect
Visual C++ .NETCppPlatformDetector
Visual C#CSPlatformDetector
Visual Basic .NETVBPlatformDetector

Cerințe preliminare

  • Această aplicație exemplificativă se creează utilizând Visual Studio 2010 și .NET Framework 4.

Mai multe informații


Ce este într-un singur cod Framework?

Cadru de cod într-un singur utilizează mostre de cod în diferite limbaje de programare pentru a ilustra cele mai multe tehnici de dezvoltare Microsoft. Fiecare mostră de cod este atent selectat, compus și documentate pentru a afișa scenariile comune de cod. Pentru mai multe informații despre într-un singur cod Framework, vizitați următorul site Web într-un singur cod Framework:

Cum să găsiți mai multe exemple de cod Framework într-un singur

Pentru a găsi mai multe exemple de cod Framework într-un singur, căutați "kbcodefx" împreună cu cuvinte cheie legate de pe Microsoft acceptă site-ul Web. Sau, vizitați următorul site Web Microsoft:

Referințe


Pentru mai multe informații despre cum să detecteze prin programare dacă se execută pe 64 de biți de Windows, vizitați următorul site web:
Exonerare de răspundere publicare rapidă
Microsoft corporation și/sau furnizorii face nici o reprezentare despre potrivirea, fiabilitatea sau acuratețea informațiilor și elemente grafice asociate conținute în acest document. Toate aceste informații și elemente grafice asociate sunt furnizate "ca atare" fără nici un fel de garanție. Microsoft și/sau furnizorii se exclud toate garanțiile și condițiile cu privire la aceste informații și legate de grafică, inclusiv toate garanţiile implicite de vandabilitate, potrivire pentru un anumit scop, uman efort, titlu şi NEÎNCĂLCARE. Sunteți de acord în mod special că nu este Microsoft și/sau furnizorii săi răspunzătoare pentru orice directe, indirecte, punitive, incidente, daune speciale, indirecte sau daunele inclusiv fel, fără limitare, daune pentru pierderea de utilizare, date sau profituri, din sau în orice fel legate de utilizarea sau incapacitatea de a utiliza informații și elemente grafice asociate conținute aici, dacă pe bază de contract, ofensă, neglijență, răspundere strictă sau în alt mod, chiar dacă a fost Microsoft sau oricare dintre furnizorii săi informat de posibilitatea de daune.