我想在Windows机器上获取活动网络位置(即家庭(私人)/工作/公共)。
是否有任何API可以获取此信息?
答案 0 :(得分:1)
当然,有一个API。您正在寻找的是COM接口INetwork
。它有一个名为GetCategory
的方法,它返回NLM_NETWORK_CATEGORY
enumeration:
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及更高版本中,其中首次引入了网络位置功能。</ p>
并且值得指出的是,在我看来,它返回的信息的有用性相当有限。您不能基于其类型对特定网络的设置做出任何类型的假设,因为用户可以修改这些设置。要获得准确的值,您需要查询您需要知道的实际设置(例如特定防火墙端口的状态)。