如何在Windows上检索活动网络位置



我想获取Windows机器上的活动网络位置(即home (private)/work/public)。

是否存在任何API来获取此信息?

当然,有一个API。你要找的是一个COM接口,INetwork。它有一个名为GetCategory的方法,它从NLM_NETWORK_CATEGORY枚举中返回一个值:

NLM_NETWORK_CATEGORY_PUBLIC               = 0x00  // a public network
NLM_NETWORK_CATEGORY_PRIVATE              = 0x01  // a private network
NLM_NETWORK_CATEGORY_DOMAIN_AUTHENTICATED = 0x02  // an Active Directory domain

当然,这个API只存在于Windows Vista及以后的版本中,其中首次引入了网络位置功能。

值得指出的是,在我看来,它返回的信息的有用性是相当有限的。您不能根据特定网络的类型对其设置做出任何假设,因为用户可以修改这些设置。要获得准确的值,您需要查询您需要知道的实际设置(例如,特定防火墙端口的状态)。

最新更新