假设我在.net中编写程序,必须尽可能准确地确定运行程序的计算机的位置。该计划将在世界各地的办事处运行。
以下是我的一些想法。
首先,我列出了每个办公室安装的网络打印机。通过枚举已配置的网络打印机列表(在.net中并不太难)并将它们与每个办公室安装的网络打印机列表进行比较,我可以做出有根据的猜测,如果计算机配置为使用我的打印机组织的伦敦办事处,然后计算机可能在伦敦办公室运行。
其次,我可以使用IP地址。假设我的组织在每个办公室都有一块IP地址,我可能会根据其IP地址推断出计算机的位置,可以通过.net中的WMI类访问。
然而,有人告诉我,如果我的程序可以确定计算机在哪个房间,那将是非常好的。据我所知,没有传统的计算机可以在没有GPS或RFID等特殊设备的情况下确定这一点。非常昂贵。
如果我没弄错的话,某些网络设备可能配置为根据计算机连接到网络设备的位置分配IP地址。 (它连接到哪个端口?)这种方法的明显缺点是它需要远程位置的IT人员的合作。
我正在寻找最实用的方法来尽可能准确地确定运行我的.net代码的PC的位置。
澄清:有些PC是笔记本电脑。尽可能地,我们想知道每次程序运行时笔记本电脑的位置。这意味着静态IP不是一个实用的解决方案。简单地建立一个关于每台PC的信息数据库不是一个解决方案,因为我们正在寻求尽可能自动地找出PC何时从一个房间移动到另一个房间。
答案 0 :(得分:2)
我们通过维护PC名称列表和相关房间/用户以及数据库中分配的IP地址来实现。
这是一个维护问题,但它是获得这种详细程度的唯一可行解决方案。并且,不用到白天,它只是与输入的数据一样准确,因此保持维护将需要预算和安排,如果它真的那么重要。
答案 1 :(得分:0)
静态专用IP地址配置到计算机中,而不是等待DHCP租用。
如果您打算采用打印机方式,计算机仍然可以在没有程序注意的情况下移动。这与在安装过程中它询问您的位置是一样的。(这更容易)
如果这是DRM的尝试,请停止。如果你想知道你可以获得GPS的位置,尽管如果有必要,它很可能会被欺骗。