[英]CopyFile/CopyFileEx not working in Windows Server 2008 R2 SP1 x64
[英]Incorrect behavior while using GetVersionEx on Windows 2008 R2 SP1
我想检查Windows操作系统的版本是否为Windows 2008或更高版本。 我正在使用以下代码,它在我的环境中可以正常工作,但是有人(客户)报告说,它不能在其生产OS环境中工作,但可以在具有Windows 2008 R2 SP1的其他系统上工作。 它无法正常工作,即使操作系统为Windows 2008 R2 SP1,它也会返回false。 代码有什么问题?
bool CheckIfOperatingISWindowsServer2K8orAbove()
{
OSVERSIONINFOEX winOSInfo;
winOSInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
GetVersionEx(&winOSInfo);
//Check if windows version is 6 (i.e longhorn) and its windows server
if( winOSInfo.dwPlatformId==VER_PLATFORM_WIN32_NT && winOSInfo.dwMajorVersion == 6 && winOSInfo.wProductType == VER_NT_SERVER)
{
if ( winOSInfo.dwMinorVersion == 0 || winOSInfo.dwMinorVersion == 1 )
return true;
}
return false;
}
我认为唯一缺少的部分不是使用ZeroMemory(&winfo,sizeof(OSVERSIONINFOEX))将winOSInfo初始化为0。
你怎么看? 您是否认为不初始化OSVERSIONINFOEX结构会导致此类问题?
提前致谢。
您能否与客户确认他们的服务器2008 R2是否配置为域控制器?
因为在结构OSVERSIONINFOEX的文档中指出了它,所以在wProductType / VER_NT_SERVER中:
请注意,也是域控制器的服务器报告为VER_NT_DOMAIN_CONTROLLER,而不是VER_NT_SERVER。
在这种情况下,您的代码将无法获得预期的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.