我必须在c#
代码中使用Microsoft SDK
目录路径。在Win 7
中,我可以很容易地通过以下行(硬编码(获得它:
string path = Path.GetFullPath("C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin");
win xp
或win 98
中是否存在某种路径?netsh.exe
在xp
或98
中的位置?
需要注意的是,当您阅读本文时,下面所说的任何内容都可能发生了变化。Windows SDK的结构和内容随着时间的推移而不断发展,并可能继续发展。
Windows SDK是根据其目标的Windows版本命名的。例如,当前的SDK名为适用于Windows 10的Windows 10 SDK,版本1803。它针对的是Windows 10版本1803,也称为Windows 2018年4月10日更新。该版本的Windows的版本号是10.0.17134。
在32位系统上,Windows SDK的默认安装位置为Program FilesWindows Kits10
,在64位系统上为Program Files (x86)Windows Kits10
。
安装文件夹中有许多子文件夹,例如include
、lib
、bin
等。在这些子文件夹中的每一个子文件夹中都有根据目标Windows版本号命名的其他子文件夹,如10.0.17134.0
、10.0.16299.0
等。
因此,在为磁盘驱动器分配了字母C的系统上,像mlgen.exe
这样的工具的完整路径对于32位代码文件是C:Program Files (x86)Windows Kits10bin10.0.17134.0x86
,对于64位代码文件则是C:Program Files (x86)Windows Kits10bin10.0.17134.0x64
。
从旧的SDK安装来看,针对Windows 10周年纪念版(版本10.0.4393(的SDK似乎没有使用"Windows版本号"子文件夹。
以前的SDK针对的是Windows 8 Program Files (x86)Windows Kits8.0
和Windows 8.1 Program Files (x86)Windows Kits8.1
。那些早期版本的SDK也不使用"Windows版本号"子文件夹(至少我身边的那些版本没有(。
更久远的是,SDK曾经安装到一个名为Microsoft SDKs
而不是Windows Kits
的文件夹中。例如,Microsoft Windows SDK For Windows 7(7.1(默认安装在Program FilesMicrosoft SDKsWindowsv7.1
或Program Files (x86)Microsoft SDKsWindowsv7.1
中。
当然,任何执行安装的人都可能选择使用不同的安装文件夹。
理想情况下,SDK路径不应在任何程序中进行硬编码,因为它可能会因不同的SDK版本和不同的系统而更改。
问题如何用程序检测和定位Windows 10 SDK提供了一些替代方案。