测试是否在域控制器上运行
以下代码使用 VerifyVersionInfo 函数来确定调用进程是否在 Windows 2000 Server 域控制器上运行。 在 LocalSystem 帐户下安装服务之前,服务安装程序可以使用此测试。 如果测试指示正在域控制器上运行,则安装服务以在用户帐户下运行,或显示一个对话框警告域控制器上作为 LocalSystem 运行的危险(即服务随后将不受限制地访问 Active Directory 域服务,这是一个极强大的安全上下文,有可能损害整个网络)。
BOOL Is_Win2000_DomainController ()
{
OSVERSIONINFOEX osvi;
DWORDLONG dwlConditionMask = 0;
// Initialize the OSVERSIONINFOEX structure.
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
osvi.dwMajorVersion = 5;
osvi.wProductType = VER_NT_DOMAIN_CONTROLLER;
// 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);
}