2010-10-01 108 views
1

为什么我在这个代码EntryPointNotFoundException。 (来源pinvoke.net)我的操作系统是Windows XP SP3。System.EntryPointNotFoundException和的DllImport( “KERNEL32.DLL”)

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Runtime.InteropServices; 

namespace System_Info 
{ 
    class Program 
    { 
     [DllImport("kernel32.dll", SetLastError = false)] 
     static extern bool GetProductInfo(
      int dwOSMajorVersion, 
      int dwOSMinorVersion, 
      int dwSpMajorVersion, 
      int dwSpMinorVersion, 
      out int pdwReturnedProductType); 

     static void Main(string[] args) 
     { 

      int ProductNum; 

      GetProductInfo(
      Environment.OSVersion.Version.Major, 
      Environment.OSVersion.Version.Minor, 
      0, 
      0, 
      out ProductNum); 

      Console.WriteLine(Environment.OSVersion.Version.Build); 
      Console.WriteLine(Environment.OSVersion.Version.Major); 
      Console.WriteLine(Environment.OSVersion.Version.MajorRevision); 
      Console.WriteLine(Environment.OSVersion.Version.Minor); 
      Console.WriteLine(Environment.OSVersion.Version.MinorRevision); 
      Console.WriteLine(Environment.OSVersion.Version.Revision); 

      Console.WriteLine(ProductNum); 

      Console.ReadKey(); 
     } 
    } 
} 

问候,

弗洛里安

回答

4

this,它仅支持Vista或Windows Server 2008中(参见要求部分)

2

好像你应该这样做:

 OperatingSystem os = Environment.OSVersion; 
     Version osVer = os.Version; 
     Console.WriteLine(osVer.Build); 
     Console.WriteLine(osVer.Major); 
     Console.WriteLine(osVer.MajorRevision); 
     Console.WriteLine(osVer.Minor); 
     Console.WriteLine(osVer.MinorRevision); 
     Console.WriteLine(osVer.Revision); 

如果你正在寻找的信息(相对于测试的PInvoke)。