Visual C++, işletim sistemi hizmet paketi düzeyi nasıl belirlenir

Makale çevirileri Makale çevirileri
Makale numarası: 307393 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz: 304721.
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 304722.

Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanına başvurulmaktadır:
  • System.Runtime.ınteropservices
Hepsini aç | Hepsini kapa

Özet

Bu adım adım makalede, GetServicePack yöntem oluşturma yöntemlerini gösterir.

Daha fazla bilgi

OSVersion özelliği, işletim sistemi (OS) bilgilerini almak için sağlanan, hizmet paketi bilgileri sağlayan bir üye içermiyor. Hangi hizmet paketinin yüklü olduğunu belirlemek için <a0></a0>, doğrudan GetVersionEx API işlevini çağırmalısınız. Genelde, bu uygulama önlemek iyidir; .NET Framework temel API kümesi daha tutarlı (ve daha kolay kullanılır) erişimi sağlar tek tek API işlevlerini çağıran tarafından farklı şekilde.

Doğrudan bir API işlevi çağırmalıdır, .NET Framework ınterop katmanı bunu yapabilirsiniz. Bu makaledeki örnek kod, hizmet paketi düzeyini döndüren GetServicePack, bir yöntem sağlar.

Not: bir sabit uzunluklu dize szCSDVersion OSVERSIONINFO yapısını içerir. Sabit uzunluklu dizeler artık desteklenmemektedir çünkü bu üyeyi uzayları arası taşıma bilgilerini sağlamanız gerekir. ([] Ile belirtilen) özniteliğini kullanarak bunu üye adının önünde.
  1. Yeni bir .NET C++ yönetilen uygulamayı açın.

    NotYeni proje) iletişim kutusunda, Visual C++ ProjectsProject Types altında tıklatın ve sonra C++ uygulama yönetilen Visual Studio .NET 2002, Console Application (.NET) için Visual Studio .NET 2003 veya CLR Console Application için Şablonlar altında Visual Studio 2005'i tıklatın.
  2. Ilgili <a1>Kod</a1> penceresi açın Project Name.cpp, tüm kodu silin.
  3. Aşağıdaki örnek kodu yapıştırın:
    #include "stdafx.h"
     
    #using <mscorlib.dll>
     
    using namespace System;
    using namespace System::Runtime::InteropServices;
    String *GetServicePack(void);
    
    [StructLayout(StructLayoutKind::Sequential)]
    __value struct OSVERSIONINFO
    {
    public:
     unsigned long dwOSVersionInfoSize; 
     unsigned long dwMajorVersion; 
     unsigned long dwMinorVersion; 
     unsigned long dwBuildNumber; 
     unsigned long dwPlatformId;
     [MarshalAs(UnmanagedType::ByValTStr, SizeConst=128)]
     String* szCSDVersion;
    };
     
    [DllImport("kernel32.dll", EntryPoint="GetVersionEx",  SetLastError=true, 
         CallingConvention=CallingConvention::StdCall)]
    extern long GetVersionEx ( [In, Out] OSVERSIONINFO* povi );
     
    // This is the entry point for this application.
    #ifdef _UNICODE
    int wmain(void)
    #else
    int main(void)
    #endif
    {
    	Console::WriteLine(GetServicePack());
        
        return 0;
    }
    
    
    String *GetServicePack(void)
    {
     OSVERSIONINFO ovi;
     ovi.dwOSVersionInfoSize = Marshal::SizeOf ( __typeof(OSVERSIONINFO) );
     
     if ( GetVersionEx ( &ovi ) == 0 )
     {
    	  return (S"Call to GetVersionEx() failed.");
      
     }
     if (ovi.szCSDVersion==(S""))					 
    	  return (S"No Service Pack Installed");
     else
          return (ovi.szCSDVersion);
     
      
    }
    					
  4. Projeyi çalıştırın ve CTRL + F5 tuşuna basın. Hizmet paketi bilgileri, konsol penceresinde görüntülenir.

Referanslar

Visual C++ .NET hakkında daha fazla genel bilgi için aşağıdaki Microsoft Usenet haber grubu ve Microsoft Web sitesini ziyaret edin:
Microsoft.public.dotnet.languages.vc
Visual C++ .NET (2002) Support Center

Özellikler

Makale numarası: 307393 - Last Review: 4 Ocak 2006 Çarşamba - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowtomaster kbnewsgrouplink KB307393 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:307393

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com