获取主机安装的操作系统

yykitty 2004-08-02 05:13:19
用API函数GetVersionEx可以获取主机安装的windows系列的操作系统,如果本机安装了Linux或Unix系统,怎么做?而且GetVersionEx是取得当前正在运行的操作系统,如果本机安装了多个操作系统,怎样都检测出来.能不能提供源代码?
...全文
167 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
COpyFRee 2004-08-04
  • 打赏
  • 举报
回复
如果单纯检测 Microsoft 的 OS ,从 Boot.ini & MSDOS.SYS 入手应该可以,但对于其它系统则不容易。
jeep008 2004-08-03
  • 打赏
  • 举报
回复
[C++ Error] Uwin.cpp(20): E2108 Improper use of typedef 'TForm1::CWin32Type'
请问这是什么意思
yykitty 2004-08-03
  • 打赏
  • 举报
回复
windows系列的我已经检测出来了,但是Linux或Unix的系统如何检测?
yjy1001 2004-08-03
  • 打赏
  • 举报
回复
不用enum就是了
String getWindowsVersion()
{
String Result;
OSVERSIONINFO info;
info.dwOSVersionInfoSize = sizeof(info);

GetVersionEx(&info);
switch(info.dwPlatformId)
{
case VER_PLATFORM_WIN32s: Result = "wt3X"; break;
case VER_PLATFORM_WIN32_WINDOWS:
{
if(info.dwMajorVersion == 4)
{
if(info.dwMinorVersion == 0)
Result = "wt95";
else if(info.dwMinorVersion == 10)
Result = "wt98";
else if(info.dwMinorVersion == 90)
Result = "wtME";
}
break;
}
case VER_PLATFORM_WIN32_NT:
{
if(info.dwMajorVersion == 3) // && info.dwMinorVersion == 51)
Result = "wtNT3";
else if(info.dwMajorVersion == 4) // && info.dwMinorVersion == 0)
Result = "wtNT4";
else if(info.dwMajorVersion == 5)
{
if(info.dwMinorVersion == 0)
Result = "wt2000";
else if(info.dwMinorVersion == 1)
Result = "wtXP";
}
break;
}
}
return Result;
}

没问题了吧
错误是你没声明enum
COKING 2004-08-02
  • 打赏
  • 举报
回复
无意义。。。
constantine 2004-08-02
  • 打赏
  • 举报
回复
难,up
h98458 2004-08-02
  • 打赏
  • 举报
回复
这个嘛,好像有点难~~~~~~~~~~~
不过是Windows那可以这样:
// 判断操作系统
enum CWin32Type{wt3X, wtNT3, wt95, wt98, wtME, wtNT4, wt2000, wtXP, /*wtNS,*/ wtUnknown};
CWin32Type getWindowsVersion()
{
CWin32Type Result;
OSVERSIONINFO info;
info.dwOSVersionInfoSize = sizeof(info);

GetVersionEx(&info);
switch(info.dwPlatformId)
{
case VER_PLATFORM_WIN32s: Result = wt3X; break;
case VER_PLATFORM_WIN32_WINDOWS:
{
if(info.dwMajorVersion == 4)
{
if(info.dwMinorVersion == 0)
Result = wt95;
else if(info.dwMinorVersion == 10)
Result = wt98;
else if(info.dwMinorVersion == 90)
Result = wtME;
}
break;
}
case VER_PLATFORM_WIN32_NT:
{
if(info.dwMajorVersion == 3) // && info.dwMinorVersion == 51)
Result = wtNT3;
else if(info.dwMajorVersion == 4) // && info.dwMinorVersion == 0)
Result = wtNT4;
else if(info.dwMajorVersion == 5)
{
if(info.dwMinorVersion == 0)
Result = wt2000;
else if(info.dwMinorVersion == 1)
Result = wtXP;
/*else if(info.dwMinorVersion ==)
Result = wtNS;*/
}
break;
}
}
return Result;
}
COpyFRee 2004-08-02
  • 打赏
  • 举报
回复
安装了多个操作系统的检测??? 这个好象有难度,从 MBR 也不能得到多少信息啊,总不会去遍历人家硬盘吧? 万一是 > 120G ,那……
COpyFRee 2004-08-02
  • 打赏
  • 举报
回复
安装了多个操作系统的检测??? 这个好象有难度

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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