所以过去我一直在工作网络中开发Windows窗体客户端软件,我们继续执行懒惰规则,不允许现场使用外部硬件,没有人可以篡改硬件,因此总是会运行软件在所有加入的网络中,这让我可以懒洋洋地设置上下文:
WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
Thread.CurrentPrincipal = wp;
所以现在我被要求编写一个将在sales-rep笔记本电脑上运行的应用程序。我无法100%保证他们不会使用该软件并在家用PC上运行并让它“假装加入”网络。我知道我可以检测到他们可能加入的网络名称,但是保证网络实际上是我们的网络的正确方法是什么?是否有某种指纹我可以嵌入应用程序本身,以确定网络是否是我们的工作网络?
答案 0 :(得分:1)
如果只是一个基本的网络名称检查,您只需使用应包含DOMAIN \ username的身份名称(WindowsIdentity.GetCurrent().Name
)。一旦你有很多方法来分割strnig并检索DOMAIN名称(参见Built-in helper to parse User.Identity.Name into Domain\Username)。
正如wegginho在评论中提到的,虽然理论上有人可以将他们的网络名称设置为同一网络。
答案 1 :(得分:1)
除此之外:
它与VPN配合得非常好!我猜这也是需要的!