读取注册表方式,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. 19-C#笔记-多态性

    # 静态多态性 --- ## 1 函数重载 和C++一样. --- ## 2 运算符重载 public static operator public static Box operator+ (Box ...

  2. nginx 搭建上传服务器

    nginx webdav 服务器搭建 该模块可以为Http webDAV 增加PUT,DELETE,MKCOL,COPY和MOVE等方法.模块在默认编译的情况下是不被包含的,需要指定编译 ./conf ...

  3. stm32定时器频率采样的方式

    频率采样方法通常采样定时器的计数方法,在stm32中,输入捕捉模式,PWM输入模式,都是可以测试外部信号频率采样的.1.输入捕捉模式需要频繁的进中断,这个方式不太好的.如果一定要用,那么就软件上处理一 ...

  4. 渗透测试工具Nmap篇

    Nmap是一款网络扫描和主机检测的非常有用的工具. Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统.Nmap ...

  5. luogu p2622关灯问题II

    luogu p2622关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[ ...

  6. 开发中常用linux命令

    1.创建目录mkdir 创建目录命令,常用的参数-p,递归创建目录 [root@web01 ~]# mkdir /data [root@web01 ~]# mkdir /data/a/b mkdir: ...

  7. Linux配置DNS

    vi /etc/resolv.conf, 后面加上nameserver 114.114.114.114

  8. vim常用命令整理

    #创建文件 vim test.txt vi test.txt touch test.txt #在vim中要想退出,先按[esc],再输入如下命令 [:wq]保存并退出 [:q]退出,未修改 [:q!] ...

  9. Android集成C程序访问驱动设备节点

    1.前言 Android系统中,应用程序一般是使用Java语言进行开发的,但是通过C语言也可以进行Android中的可执行程序开发,接下来,将简单介绍在Android系统中如何通过C程序来访问内核中s ...

  10. LeetCode dp专题

    1. 动态规划的适用场景 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法. 2. 动态规划的基本思想 动态规划背后的基本思想非常简单.大致上,若要解一个给 ...