这些天需要写个程序获得计算机内的并口名称及地址。在网上找了找,并没有发现什么合适的信息。不过这不算什么,如果什么东西网上都有,那才是笑话了。
写程序,主要就是个思路的问题。我知道注册表内存放了很多硬件的信息,因此我第一想到的就是通过注册表取得这些内容。
首先我在这个地方找到了下列内容:
[HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/PARALLEL PORTS]
"//Device//Parallel0"="//DosDevices//LPT1"
这说明端口名称是可以获得的。不过我在这里并没有找到对应的名称 -- 就是在设备管理器里显示的 : 打印机端口 (LPT1) 这个名称。不过这没关系。。。直接在注册表里找。。。
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Enum/ACPI/PNP0400/4&26dd0f47&0]
"FriendlyName"="打印机端口 (LPT1)"
这说明,可以通过‘friendlyname’来获得并口的确切名称。那地址呢?
"FilteredConfigVector"=hex(a):80,04,00,00,0f,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,01,00,01,00,04,00,00,00,01,/
80,03,00,00,00,00,00,01,00,00,00,01,00,00,00,f0,03,00,00,00,00,00,00,f5,03,/
00,00,00,00,00,00,01,01,01,80,11,00,00,00,08,00,00,00,01,00,00,00,78,03,00,/
00,00,00,00,00,7f,03,00,00,00,00,00,00,01,01,01,80,11,00,00,00,04,00,00,00,/
01,00,00,00,78,07,00,00,00,00,00,00,7b,07,00,00,00,00,00,00,01,00,01,80,01,/
00,00,00,07,00,00,00,07,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,00,01,00,01,00,0a,00,00,00,00,01,01,00,11,00,00,00,08,00,00,00,01,00,00,/
00,78,03,00,00,00,00,00,00,7f,03,00,00,00,00,00,00,00,01,01,00,11,00,00,00,/
04,00,00,00,01,00,00,00,78,07,00,00,00,00,00,00,7b,07,00,00,00,00,00,00,00,/
00,01,00,01,00,00,00,03,00,00,00,03,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,08,00,01,00,01,00,00,00,04,00,00,00,04,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,05,00,00,00,/
05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,/
00,00,00,07,00,00,00,07,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,00,08,00,01,00,01,00,00,00,09,00,00,00,09,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,0a,00,00,00,0a,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,0b,/
00,00,00,0b,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,/
01,00,01,00,00,00,0c,00,00,00,0c,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,01,00,01,00,0a,00,00,00,00,01,01,00,11,00,00,00,08,00,00,00,/
01,00,00,00,78,02,00,00,00,00,00,00,7f,02,00,00,00,00,00,00,00,01,01,00,11,/
00,00,00,04,00,00,00,01,00,00,00,78,06,00,00,00,00,00,00,7b,06,00,00,00,00,/
00,00,00,00,01,00,01,00,00,00,03,00,00,00,03,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,04,00,00,00,04,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,05,/
00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,/
01,00,01,00,00,00,07,00,00,00,07,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,08,00,01,00,01,00,00,00,09,00,00,00,09,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,0a,00,00,00,0a,/
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,/
00,00,0b,00,00,00,0b,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,08,00,01,00,01,00,00,00,0c,00,00,00,0c,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,01,00,01,00,0a,00,00,00,00,01,01,00,11,00,00,00,04,/
00,00,00,01,00,00,00,bc,03,00,00,00,00,00,00,bf,03,00,00,00,00,00,00,00,01,/
01,00,11,00,00,00,04,00,00,00,01,00,00,00,bc,07,00,00,00,00,00,00,bf,07,00,/
00,00,00,00,00,00,00,01,00,01,00,00,00,03,00,00,00,03,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,04,00,00,00,04,/
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,/
00,00,05,00,00,00,05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,08,00,01,00,01,00,00,00,07,00,00,00,07,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,09,00,00,00,09,00,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,00,01,00,00,00,0a,00,/
00,00,0a,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08,00,01,/
00,01,00,00,00,0b,00,00,00,0b,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,/
00,00,00,00,08,00,01,00,01,00,00,00,0c,00,00,00,0c,00,00,00,00,00,00,00,00,/
00,00,00,00,00,00,00,00,00,00,00
这说明,可以直接通过读取注册表的方法来获得并口名称及地址。。。问题解决。具体的事情就是要如何处理读取注册表了。。。
未完。。。。
这个方式似乎存在问题,扩展的并口地址没有正确取得。
再找找。。