读取注册表方式,jregistrykey.jar与jregistrykey.dll.通过“characteristics”值确定虚拟网卡还是物理网卡。该值在注册表的位置HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\【连接索引号】\下

   private static intNCF_PHYSICAL = 0x4;//组件是一个物理适配器

private static intNCF_SOFTWARE_ENUMERATED = 0x2; //组件是一个软件模拟的适配器

private static intNCF_VIRTUAL = 0x1;//组件是个虚拟适配器

private static intNCF_HIDDEN = 0x8;//组件不显示用户接口

private static intNCF_NO_SERVICE = 0x10;//组件没有相关的服务(设备驱动程序)

private static intNCF_NOT_USER_REMOVABLE = 0x20;//不能被用户删除(例如,通过控制面板或设备管理器)

private static intNCF_MULTIPORT_INSTANCED_ADAPTER = 0x40;//组件有多个端口,每个端口作为单独的设备安装。每个端口有自己的hw_id(组件ID) 并可被单独安装,这只适合于EISA适配器

private static intNCF_HAS_UI = 0x80;//组件支持用户接口(例如,Advanced Page或Customer Properties Sheet)

private static intNCF_FILTER = 0x400;//组件是一个过滤器

根据Characteristics值当

如果是虚拟网卡:Characteristics& NCF_VIRTUAL ==NCF_VIRTUAL

如果是物理网卡:Characteristics& NCF_PHYSICAL ==NCF_PHYSICAL

该方式会把微软回环网卡也取到,所以应添加用户接口判断,去掉环回网卡。

物理网卡:Characteristics& NCF_PHYSICAL ==NCF_PHYSICAL && Characteristics &NCF_HAS_UI ==NCF_HAS_UI

private static String PATH = "SYSTEM\\\\ControlSet001\\\\Control\\\\Class\\\\{4d36e972-e325-11ce-bfc1-08002be10318}";
private static String WLAN_PATH ="\\Ndi\\Interfaces";

/** * 获取子健集合

* @param str
* @return
*/
public List getReKeyList(String str) {
List<String> list = new ArrayList<String>();
RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE,str);  
if(r.hasSubkeys()) {  
  Iterator i = r.subkeys();  
  while(i.hasNext()) {  
     RegistryKey x = (RegistryKey)i.next();  
     list.add(x.getPath());
  } 

return list;
}

/**
* 读取键值
*/
public String getReValueByPath(String path,String key) {
String str ="";
RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, path); 
if(r.hasValue(key)) {  
  RegistryValue v = r.getValue(key);  
  str = v.getData().toString();
}
return str;
}

/**
* 枚举某键的所有值
* @param path
*/
public void listValueForKey(String path) {
RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, path);  
if(r.hasValues()) {  
  Iterator i = r.values();  
  while(i.hasNext()) {  
     RegistryValue v = (RegistryValue)i.next();  
     System.out.println(v.toString());  
  }  

}

java 判断虚拟网卡物理网卡的更多相关文章

  1. 如何判断Linux下 网卡是虚拟还是物理网卡?

    ifconfig命令可以查看Linux系统中正在使用的网卡,包括物理网卡和虚拟网卡,如果想要查看Linux系统中全部的网卡,可以查看/proc/net/dev文件,那如何区分网卡是虚拟还是物理的呢? ...

  2. 使用C++对物理网卡/虚拟网卡进行识别(包含内外网筛选)

    简介 在Socket编程的时候,我们需要实时获取我们所需要的IP地址.例如在编写后门的时候,我们可能需要获得有效的外网IP或内网IP:有时候我们可能需要判断我们获取的是否是虚拟机网卡,这时候就需要对每 ...

  3. MAC地址获取,有线网卡与无线网卡、物理网卡与虚拟网卡的区分

    获取当前活跃状态的网卡MAC地址.物理地址 Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration. 其中cmd命令行执行: 1. ...

  4. 删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡

    Windows环境下,在更换硬件服务器主板和网卡等硬件.恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题.例如,设备管理器中多了不应该存在的网卡:因命名冲突无法重命名当前网络连接:IP地址冲 ...

  5. C#如何获取物理网卡,虚拟网卡,以及无线网卡

    就不废话了,直接上代码 /// <summary></summary> /// 显示本机各网卡的详细信息 /// <summary></summary> ...

  6. Linux下双物理网卡设置成虚拟网卡

    为了提供网络的高可用我们须要将多块网卡绑定设置成一块虚拟的网卡对外提供服务,这样能够防止一块网卡损坏或者防止网线连接故障造成的连接中断. 以下我们使用eth0与eth1来虚拟成为bond0为例:--- ...

  7. 数据包从物理网卡流经 Open vSwitch 进入 OpenStack 云主机的流程

    目录 文章目录 目录 前言 数据包从物理网卡进入虚拟机的流程 物理网卡处理 如何将网卡收到的数据写入到内核内存? 中断下半部分软中断处理 数据包在内核态 OvS Bridge(Datapath)中的处 ...

  8. VC获取物理网卡的MAC地址

    获取网卡的MAC地址的方法很多,如:Netbios,SNMP,GetAdaptersInfo等.经过测试发现 Netbios 方法在网线拔出的情况下获取不到MAC,而 SNMP 方法有时会获取多个重复 ...

  9. 桥接物理网卡,pipwork指定ip,外网连接,研究salt+docker

    1.桥接物理网卡: 首先下载工具: yum -y install --enablerepo=epel bridge-utils 停止服务: 983 systemctl stop docker 删除do ...

随机推荐

  1. swagger 配置- ssm

    swagger 配置 - ssm swagger 是一个用来看接口的工具,具体效果如下,这里用的是swagger2 1.porm.xml <dependency> <groupId& ...

  2. USACO Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...

  3. 第二阶段团队冲刺(个人)——One

    今天的任务:修改登录界面.将原有的登录界面全部改掉,仿照千图网,做界面.

  4. Jupyter-notebook安装问题及解决

    两种方式: 1.pip install jupyter notebook 2.安装Anaconda 1.pip安装 通过命令行pip,要注意是在哪个虚拟环境,安装好后jupyter notebook所 ...

  5. PATA1025PAT Ranking

    需要注意的就是sort函数的应用,还有自己比较函数cmp的编写 在一个就是结构体的设计,排序时的考室内的排序,数组下标的处理 参考代码: #define _CRT_SECURE_NO_WARNINGS ...

  6. Redis4.0.9最新版本安装时出现的问题

    Redis Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列. Redis的特点: Redis存在于内存,使用硬盘作为持久化 ...

  7. Linux学习之编译运行.c(C语言)文件

    在Linux命令行界面下,创建文件hello.c,进入vim编辑器,编辑一个简单的C语言文件 分解C语言文件执行过程,要经过预编译.编译.汇编.连接四个步骤后才能执行, 预编译:gcc -E hell ...

  8. 对C++11中的`移动语义`与`右值引用`的介绍与讨论

    本文主要介绍了C++11中的移动语义与右值引用, 并且对其中的一些坑做了深入的讨论. 在正式介绍这部分内容之前, 我们先介绍一下rule of three/five原则, 与copy-and-swap ...

  9. java IO流读取图片供前台显示

    最近项目中需要用到IO流来读取图片以提供前台页面展示,由于以前一直是用url路径的方式进行图片展示,一听说要项目要用IO流读取图片感觉好复杂一样,但任务下达下来了,做为程序员只有选择去执行喽,于是找了 ...

  10. 第8课 常量表达式(constexpr)

    一. const 和constexpr的区别 (一)修饰变量时,const为“运行期常量”,即运行期数据是只读的.而constexpr为“编译期”常量,这是const无法保证的.两者都是对象和函数接口 ...