现在的位置: 首页 > 综合 > 正文

用InstallShield制作安装包时,有时候需要判断操作系统的类型(如Windows XP或者是Windows Vista等

2018年07月27日 ⁄ 综合 ⁄ 共 1435字 ⁄ 字号 评论关闭

转自:http://blog.csdn.net/huangxinfeng/article/details/4873847

 用InstallShield制作安装包时,有时候需要判断操作系统的类型(如Windows XP或者是Windows Vista等

http://community.flexerasoftware.com/

方法一:采用注册表的方式进行判断,例程如下:
NUMBER nOS,nvResult;
STRING svOS;

nOS = REGDB_NUMBER;
RegDBSetDefaultRoot( HKEY_LOCAL_MACHINE );
RegDBGetKeyValueEx( "SOFTWARE//Microsoft//Windows NT//CurrentVersion","CurrentVersion", nOS, svOS, nvResult);
if (svOS == "6.0") then
    MessageBox("We are on Vista!", INFORMATION);
else
    if (svOS == "5.1") then
        MessageBox("We are on XP!",INFORMATION);
    endif;
endif;

方法二:采用GetSystemInfo函数进行处理,请看下面的说明信息:
SYSINFO.nWinMajor
4  The operating system is Windows NT 4.0.  
5  The operating system is Windows Server 2003 R2, Windows Server 2003, Windows   XP,or Windows 2000.  
6  The operating system is Windows Vista or Windows Server 2008.  

SYSINFO.nWinMinor:
 The operating system is Windows Vista, Windows Server 2008, Windows 2000, or Windows NT 4.0.  
1  The operating system is Windows XP.  
2  The operating system is Windows Server 2003 R2, Windows Server 2003, or Windows XP Professional x64 Edition. 

GetSystemInfo(WINMINOR, nvResult, svResult);
GetSystemInfo(WINMAJOR, nvResult, svResult);

方法二可以通过InstallShield的帮助文档找到更详细的信息。

方法三:通过SYSINFO.WINNT的方法进行判断,例程如下:
if (SYSINFO.WINNT.bWinVista) then   
     if (SYSINFO.nOSProductType = VER_NT_WORKSTATION) then 
          // 当前操作系统为Windows Vista
     endif;
endif;
if (SYSINFO.WINNT.bWinXP) then    
    当前操作系统为Windows XP
endif;

上述三种方法是最为常见的解决办法,当然亦可能还有其他的方法可以进行处理。

抱歉!评论已关闭.