越南翻唱雨蝶的女歌手:vc,想通过识别操作系统是win2k还是XP来#define不同的值

来源:百度文库 编辑:高校问答 时间:2024/05/10 06:25:41
用户的系统是win2000时,用#define将LOCAL定义为"c:\\windows"
用户的系统是XP时,LOCAL定义为"c:\\winNT"

请给出VC6.0代码

VerifyVersionInfo,这个函数可以达到这个目的;
GetVersionEx,这个函数也可以;
一般可以达到98和2000的分类;至于2000和xp的分类不知道能不能;具体代码如下:VerifyVersionInfo;

BOOL Is_Win2000_Professional ()
{
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;

// Initialize the OSVERSIONINFOEX structure.

ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 5;
osvi.wProductType = VER_NT_WORKSTATION;

// Initialize the condition mask.

VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION,
VER_GREATER_EQUAL );
VER_SET_CONDITION( dwlConditionMask, VER_PRODUCT_TYPE,
VER_EQUAL );

// Perform the test.
return VerifyVersionInfo(
&osvi,
VER_MAJORVERSION | VER_PRODUCT_TYPE,
dwlConditionMask);
}
还有其他判断的代码,如果这个代码可以,再给;
如果你判断出是2000或者是xp,也没有必要用define,你直接把某一数组内存入该目录即可;原因为:判断出来后也不好用define处理;

这个方法局限性太大了,因为系统可能不是默认的目录,应该使用GetSystemDirectory函数来获得系统目录。

其实你可以尝试着这样来解决你的问题:

我觉得这样的方法可能更加的快捷,有用的信息会更多一些:

引用控件 Microsoft SysInfo Control 6.0。

1