📄 dtwinver.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>DtWinVer v1.78</title>
<link rel="stylesheet" type="text/css" href="naughter.css">
</head>
<body bgcolor="#FFFFFF">
<h2 align="left">
<img src="dtwinver.gif" width="67" height="58"
alt="DTWinVer Logo">DtWinVer v1.78</h2>
<p> </p>
<table>
<TBODY>
<tr>
<td><a href="#Features">Features</a></td>
</tr>
<tr>
<td><a href="#Copyright">Copyright</a></td>
</tr>
<tr>
<td><a href="#History">History</a></td>
</tr>
<tr>
<td><a href="#API">API Reference</a></td>
</tr>
<tr>
<td><a href="#Notes">Notes</a></td>
</tr>
<tr>
<td><a href="#Contact">Contacting the Author</a></td>
</tr>
</TBODY>
</table>
<p> </p>
<p> </p>
<p> </p>
<h2><a name="Features"></a>Features</h2>
<p>DtWinVer is a C++ class which
provides a comprehensive method to determine which OS the program that calls it
is running on. All methods it uses are fully documented on various articles on
MSDN. The routine provides the emulated OS as well as the underlying OS. e.g to a DOS program Windows 95 looks like MS-DOS 7.0. A full list of the OS’s
it can detect are:<ul>
<li>DOS</li>
<li>Windows 3.0</li>
<li>Windows 3.1</li>
<li>Windows 3.11</li>
<li>Windows for Workgroups</li>
<li>Win32s (if you can call this
an OS <g>)</li>
<li>Windows CE 1.0 </li>
<li>Windows CE 2.0</li>
<li>Windows CE 2.1</li>
<li>Windows CE 2.11</li>
<li>Windows CE 3.0</li>
<li>Windows CE.Net</li>
<li>Windows CE 5</li>
<li>Windows 95 Gold </li>
<li>Windows 95 Service Pack 1</li>
<li>Windows 95B aka OEM Service
Release 2[.1]</li>
<li>Windows 95C aka OEM Service
Release 2.5</li>
<li>Windows 98</li>
<li>Windows 98 Service Pack 1</li>
<li>Windows 98 Second Edition</li>
<li>Windows Millennium Edition</li>
<li>NT 3.1</li>
<li>NT 3.5</li>
<li>NT 3.51</li>
<li>All flavours of NT, 2000 and
XP Service packs</li>
<li>NT 4.0</li>
<li>NT Workstation, Server, PDC,
BDC, Datacenter, Enterprise</li>
<li>Windows 2000</li>
<li>Windows 2000 Professional,
Server, Domain Controller, Datacenter and Advanced Server</li>
<li>Windows Terminal Services and
Back Office</li>
<li> Windows XP Starter Edition, XP Personal & XP
Professional</li>
<li> Windows Server 2003, Windows
Server 2003 (Web Edition), Windows Server 2003 Domain Controller,
Datacenter, Enterprise Server & 64 bit Editions</li>
<li> Windows Server 2003 R2,
Windows Server 2003 R2 (Web Edition), Windows Server 2003 R2 Domain
Controller, Datacenter, Enterprise Server & 64 bit Editions</li>
<li>Embedded Windows NT / 2000 / XP.</li>
<li>XP Media Center Edition</li>
<li>Windows XP Tablet PC Edition</li>
<li>Windows Vista (All SKU's including Starter Edition, Home Basic N, Home
Basic, Home Premium, Home Premium N, Business N, Business, Enterprise N, Enterprise, Ultimate
N, Ultimate).</li>
<li>Windows Server 2008, Windows
Server 2008 (Web Edition), Windows Server 2008 DataCenter, Enterprise Server,
Core Server, Hyper-V & 64 bit Editions</li>
<li>Windows Essential Business Server Management, Messaging and Security
Server</li>
<li>Windows Storage Enterprise, Express, Standard and Workgroup Server</li>
<li>Windows Server 2003 & 2008 Computer Cluster Edition</li>
<li>Windows Cluster Server</li>
<li>Windows Home Server</li>
<li>Windows "Security Application" mode</li>
<li>BackOffice, Small Business Server & Small Business Server Premium installed</li>
<li>Windows 7</li>
</ul>
<p> </p>
<p> </p>
<p> </p>
<p>Some of the possible scenarios it
can report on are:
<ul>
<li>"You are running an emulated
DOS v5.50 On Windows 2000 Server Build 2195 Service Pack 2"</li>
<li>"You are running an emulated
Windows 3.95 on Windows 95 v4.0 Build 950"</li>
<li>"You are running Windows for
Workgroups on DOS v6.22"</li>
<li>"You are running NT Server
v3.51"</li>
<li>"You are running this 32 bit
process on the WOW64 layer of 64 bit Windows"</li>
<li>"You are running an
application on Windows NT Terminal Server.</li>
<li>This NT machine is acting as a
stand alone server, primary domain controller or backup domain controller.</li>
</ul>
<p> </p>
<p> </p>
<p> </p>
<h2><b><a name="Copyright"></a>Copyright</b></h2>
<ul>
<li>You are allowed to include the source code in
any product (commercial, shareware, freeware or otherwise) when your product
is released in binary form.</li>
<li>You are allowed to modify the source code in
any way you want except you cannot modify the copyright details at the top
of each module.</li>
<li>If you want to distribute source code with
your application, then you are only allowed to distribute versions released
by the author. This is to maintain a single distribution point for the
source code.</li>
</ul>
<p> </p>
<p> </p>
<p> </p>
<h2><a name="History"></a>History</h2>
<p><strong>v1.1 (8 May 1997)</strong>
<ul>
<li>Fix to remove Unicode and
TCHAR code when being compiled for Win16.</li>
</ul>
<p><strong>v1.2 (13 September 1998)</strong>
<ul>
<li>Updated the sample app plus
the DtWinVer code to explicitly support Windows 98.</li>
</ul>
<p><strong>v1.3 (22 June 1998)</strong>
<ul>
<li>UNICODE enabled the code.</li>
<li>Removed need for the dwOSVersionInfoSize variable.</li>
<li>Added support for detecting Build Number of 95 and 98 from DOS code path.</li>
<li>Now ships as standard with VC 5 workspace files.</li>
<li>Added explicit support for Windows 95 SP 1.</li>
<li>Added explicit support for Windows 95 OSR 2.</li>
<li>Added explicit support for Windows 98 Second Edition.</li>
<li>Added explicit support for Windows 2000.</li>
<li>Added explicit support for Windows CE.</li>
<li>Added explicit support for Windows Terminal Server's.</li>
<li> Added explicit support for NT Stand Alone Server's.</li>
<li>Added explicit support for NT Primary Domain Controller's.</li>
<li>Added explicit support for NT Backup Domain Controller's.</li>
</ul>
<p><strong>v1.31 (23 July 1999)</strong>
<ul>
<li> Tested out support for Windows 98 SE, minor changes required</li>
</ul>
<p><strong>v1.32 (26 July 1999)</strong>
<ul>
<li>Added explicit support for Windows 98 SP 1.</li>
</ul>
<p><strong>v1.33 (28 July 1999)</strong>
<ul>
<li>Fixed a problem when application is build in non-huge/large memory model
in Win16.</li>
<li> Added explicit support for returning NT and Win9x service pack
information from Win32 and Win16 code paths.</li>
<li> Updated test program to not bother reporting on any info which does not
exist. e.g. if there is no service pack installed, then we don't bother
displaying any info about service packs.</li>
<li> Added explicit support for NT Enterprise Edition.</li>
</ul>
<p><strong>v1.34 (2 February 2000)</strong>
<ul>
<li>Fixed a minor copy and paste bug in the test program.</li>
</ul>
<p><strong>v1.35 (30 June 2000)</strong>
<ul>
<li> Added explicit support for Windows Millennium Edition</li>
</ul>
<p><strong>v1.4 (29 January 2001)</strong>
<ul>
<li>Added explicit support for XP Personal</li>
<li>Added explicit support for XP Professional</li>
<li>Added explicit support for XP Server</li>
<li>Added explicit support for XP Advanced Server</li>
<li>Added explicit support for XP Datacenter</li>
<li>Added explicit support for XP 64 bit (all flavours)</li>
<li>Made all the code into a C++ class called COSVersion</li>
<li>Rewrote all the generic thunk code to be easier to follow</li>
<li>Generic thunk code now uses CallProcEx32W</li>
<li>Added explicit support for BackOffice Small Business Edition</li>
<li>Added explicit support for Terminal Services</li>
<li>16 bit code path now can determine ProductSuite and ProductType type thro
additional generic thunk code</li>
<li>Provided a 64 bit test binary and make batch file (make64.bat) for those
lucky enough to have an Itanium processor and a beta of 64 bit Windows XP.</li>
<li>Provided a Embedded C++ workspace and X86 Release binary.</li>
<li>Updated copyright information</li>
</ul>
<p><strong>v1.41 (10 February 2001)</strong>
<ul>
<li>Updated function names etc following MS decision to call Whistler "Windows
XP".</li>
</ul>
<p><strong>v1.42 (10 October 2001)</strong>
<ul>
<li> Added code to 32 bit code path to detect if we are being run under 64 bit
Windows. Also updated the sample app to distinguish between emulated 64 bit
and underlying 64 bit.</li>
<li>Updated the sample app to call XP Server its proper name which will be
"Windows.NET Server"</li>
</ul>
<p><strong>v1.5 (13 December 2001)</strong>
<ul>
<li> Major upgrade. Now 16 bit DOS path can return as much information as
native Win32 code. This is achieved by spawning off the Win32 utility
WriteVer with a special command line option. Please note that if you intend
deploying dtwinver then you must now ship the writever.exe file in addition
to linking in the dtwinver code into your application. Also this utility
needs to be in the path or current directory when the dtwinver code is
executing. Thanks to Chaz Angell for prompted me into finding a solution for
this last major item missing in dtwinver.</li>
</ul>
<p><strong>23 March 2002</strong>
<ul>
<li> Updated Win32 and Win64 apps to have version info in them. No changes
have been made to the main dtwinver code.</li>
</ul>
<p><strong>v1.6 (30 August 2002)</strong>
<ul>
<li> Provided an update CE workspace to work correctly in eMbedded Visual C++
v3. All build configurations for eVC 3 have also been provided.</li>
<li>Optimized the usage of _tcscat and _tcscpy in the test app which comes
with Dtwinver.cpp</li>
<li>OEM Info string and Platform Type string is now returned for CE code path</li>
<li>Fixed display of minor version number for example Windows.Net is version
number v5.20 but should be shown as 5.2 to be consistent with what the
native ver command displays</li>
<li>Provided a new CE workspace to work correctly in eMbedded Visual C++ v4.
All build configurations for eVC 4 have also been provided.</li>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -