如何保证计算机在离线时加入特定域?

时间:2011-04-19 09:33:02

标签: c# windows authentication dns

所以过去我一直在工作网络中开发Windows窗体客户端软件,我们继续执行懒惰规则,不允许现场使用外部硬件,没有人可以篡改硬件,因此总是会运行软件在所有加入的网络中,这让我可以懒洋洋地设置上下文:

WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
Thread.CurrentPrincipal = wp;

所以现在我被要求编写一个将在sales-rep笔记本电脑上运行的应用程序。我无法100%保证他们不会使用该软件并在家用PC上运行并让它“假装加入”网络。我知道我可以检测到他们可能加入的网络名称,但是保证网络实际上是我们的网络的正确方法是什么?是否有某种指纹我可以嵌入应用程序本身,以确定网络是否是我们的工作网络?

2 个答案:

答案 0 :(得分:1)

如果只是一个基本的网络名称检查,您只需使用应包含DOMAIN \ username的身份名称(WindowsIdentity.GetCurrent().Name)。一旦你有很多方法来分割strnig并检索DOMAIN名称(参见Built-in helper to parse User.Identity.Name into Domain\Username)。

正如wegginho在评论中提到的,虽然理论上有人可以将他们的网络名称设置为同一网络。

答案 1 :(得分:1)

天哪,这就是你的意思。我的位置头与桌子相遇。 您需要的是许可证服务器。你显然在描述公司许可证的情况!您的网络中是否有MSSQL-Server?

  • 创建像your_program_nameLCU(许可证检查用户)
  • 之类的用户
  • 创建用户具有读取权限的数据库
  • 针对数据库不可访问的情况创建Try-Catch
  • 显然他不在你的网络中,所以关闭了程序!

除此之外:

它与VPN配合得非常好!我猜这也是需要的!