【获取操作系统版本的问题】

xinye1 2003-07-17 02:53:24
我在http://www.codeguru.com/mfc/comments/43266.shtml看到一段代码,是非常全面的检测系统的版本!
可是我拷贝到vc6里面编译不能通过!
error C2039: 'wProductType' : is not a member of '_OSVERSIONINFOEXA'

我查了一下最新的MSDN2003,里面的是这样的
typedef struct _OSVERSIONINFOEX {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[128];
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
BYTE wReserved;
} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;


而VC6里面WINBASE.H定义是这样的:
typedef struct _OSVERSIONINFOEXW {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
WCHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wReserved[2];
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;

比上面少了两项
WORD wSuiteMask;
BYTE wProductType;
,而我看到那个网站的例子正好用到这两项,
现在请问大家的是我该如何用最新的那个结构?
...全文
207 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
penter 2003-07-18
  • 打赏
  • 举报
回复
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

其中的一个地址,下SDK;
papaya_stone 2003-07-17
  • 打赏
  • 举报
回复
我装的是2001年11月的platform sdk,在里面就有这个定义了。好像在winnt.h里面。
xinye1 2003-07-17
  • 打赏
  • 举报
回复
to blue_fairy(兰精灵) ( ) 信誉:100


可是我要用到后面那几个常量啊!我哪知道微软都是定义的多少值啊??

无敌魔仙 2003-07-17
  • 打赏
  • 举报
回复
up
blue_fairy 2003-07-17
  • 打赏
  • 举报
回复
我给你说个简单的方法:
你直接对这个类型重新定义成MSDN2003里的形式就可以了,
至于是否能够取到版本信息,因为用到的是保留内容,我没有试过。
xinye1 2003-07-17
  • 打赏
  • 举报
回复
那个在那里下载啊?
丁淇石头 2003-07-17
  • 打赏
  • 举报
回复
OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&OsVersionInfo); //获取操作系统版本信息
if(OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
//Windows98,调用ExitWindowsEx()函数重新启动计算机
DWORD dwReserved;
ExitWindowsEx(EWX_REBOOT,dwReserved); //可以改变第一个参数,实现注销用户、
//关机、关闭电源等操作
// 退出前的一些处理程序
}
papaya_stone 2003-07-17
  • 打赏
  • 举报
回复
是不是需要装新的platform sdk呀。
xinye1 2003-07-17
  • 打赏
  • 举报
回复
VER_SUITE_BACKOFFICE Microsoft BackOffice components are installed.
VER_SUITE_BLADE Windows Server 2003, Web Edition is installed.
VER_SUITE_DATACENTER Windows 2000 Datacenter Server or Windows Server 2003, Datacenter Edition is installed.
VER_SUITE_ENTERPRISE Windows NT 4.0 Enterprise Edition, Windows 2000 Advanced Server, or Windows Server 2003, Enterprise Edition is installed.
VER_SUITE_PERSONAL Windows XP Home Edition is installed.
VER_SUITE_SMALLBUSINESS Microsoft Small Business Server is installed.
VER_SUITE_SMALLBUSINESS_RESTRICTED Microsoft Small Business Server is installed with the restrictive client license in force.
VER_SUITE_SECURITY_APPLIANCE Windows Server 2003 is installed as a hardened operating system as part of a security appliance.
VER_SUITE_TERMINAL Terminal Services is installed.



还有这几个!都是MSDN2003上面新加的,我该如何使用它们??
papaya_stone 2003-07-17
  • 打赏
  • 举报
回复
是不是需要装新的platform sdk呀。
xinye1 2003-07-17
  • 打赏
  • 举报
回复
还有一下这几个常量在vc6里面没有定义啊!
VER_NT_WORKSTATION
VER_NT_DOMAIN_CONTROLLER
VER_NT_SERVER

我该如何用它们??
xinye1 2003-07-17
  • 打赏
  • 举报
回复
up

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧