读取注册表方式,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. struts2学习1

    struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以及思想 使用拦截器 struts2的历史 str ...

  2. sqlyog 下载

    https://www.cnblogs.com/givemelove/p/7777975.html

  3. mark-向量式编程

    numpy的速度→→→numpy中的向量式编程 from numpy to python https://www.labri.fr/perso/nrougier/from-python-to-nump ...

  4. 删除github中某个文件夹

    在上传项目到github时,忘记忽略了某个文件夹target,就直接push上去了, 最后意识到了此问题,决定删除掉远程仓库中的target文件夹 删除前: 删除后: 在github上只能删除仓库,却 ...

  5. 第02组Beta冲刺(3/4)

    队名:十一个憨批 组长博客 作业博客 组长黄智 过去两天完成的任务:了解整个游戏的流程 GitHub签入记录 接下来的计划:继续完成游戏 还剩下哪些任务:完成游戏 燃尽图 遇到的困难:没有美术比较好的 ...

  6. react-native-cli运行项目及打包apk失败的解决过程

    刚开始学习react native,第一步自然是搭建好开发环境,node及jdk本身就有,Python2.Android studio以及Android sdk的安装倒是没什么大问题,按照官网的教程做 ...

  7. git手册查询

    1.创建版本库 通过git init命令把此目录变成Git可以管理的仓库; 添加文件到Git仓库,分两步 第一步:git add <file>,注意,可反复多次使用,添加多个文件:例如 g ...

  8. Guava 源码分析之Cache的实现原理

    Guava 源码分析之Cache的实现原理 前言 Google 出的 Guava 是 Java 核心增强的库,应用非常广泛. 我平时用的也挺频繁,这次就借助日常使用的 Cache 组件来看看 Goog ...

  9. 出现Strict Standards: Only variables should be passed by reference in的解决方法

    出现Strict Standards: Only variables should be passed by reference in的解决方法 代码报错: <br /><b> ...

  10. Python【每日一问】28

    问: [基础题]:求 1+2!+3!+...+20! 的和 [提高题]:两个乒乓球队进行比赛,各出三人.甲队为 a,b,c 三人,乙队为 x,y,z 三人.已抽签决定比赛名单. 有人向队员打听比赛的名 ...