tags:

views:

24

answers:

2

Hi,

Why have I a EntryPointNotFoundException in this code. (source pinvoke.net) My OS is Windows XP SP3.

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();
        }
    }
}

Regards,

Florian

+4  A: 

According to this, it's only supported for Vista or Windows Server 2008. (see Requirements section)

Henrik
+2  A: 

Seems like you should do this:

        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); 

if its the information you are looking for (as opposed to testing a pInvoke).

Steve Ellinger