如何限制 .Net 程序集在特定机器上运行
Posted
技术标签:
【中文标题】如何限制 .Net 程序集在特定机器上运行【英文标题】:How to restrict .Net Assembly to Run on Particular Machines 【发布时间】:2009-05-16 00:10:50 【问题描述】:我们有一个服务器应用程序,我们希望限制非用户从其他机器触发它,甚至通过双击任何共享来触发它。
但是,开发人员应该很容易在他们的盒子上运行它。
执行此政策的各种方法是什么?
【问题讨论】:
【参考方案1】:一个想法:可以使用需要存在才能运行的注册表项。
另一个:可能需要在密钥库中安装 X509 证书才能运行
另一个:使用 System.Security.Permissions 并将操作限制为一组用户或一个组。
等等
【讨论】:
【参考方案2】:有几种方法可以控制程序集的访问。
我们基于许可保护我们的程序集,因此只有拥有许可的工作站才能运行程序集。
我们允许开发人员在未选中的情况下运行调试版本。我们当然会严格控制调试版本。如有必要,您可以在调试版本中进行额外检查以提高安全性。或者向开发者颁发许可证。
对于我们的调试版本,我们在包含在“#IF DEBUG”中的调试代码中添加了一个许可证,以确保它不会被编译到发布版本中。
我并不是说这是最好的方法,但这是我们使用的方法。
【讨论】:
我喜欢#IF DEBUG 路由,这就是我所做的。此外,如果 OP 还没有正式的构建过程,这可能是他们实施的正确动机。【参考方案3】:我想你正在寻找一个简单的故障保护,而不是一个气密的访问控制......
将机器名称放入配置文件中,并在应用程序启动时将其与机器名称进行比较。这样您就不会在其他任何地方错误地运行它,并且在开发或移动应用程序时很容易更改。
【讨论】:
以上是关于如何限制 .Net 程序集在特定机器上运行的主要内容,如果未能解决你的问题,请参考以下文章
使用 PowerShell 脚本中的 WinSCP .NET 程序集在 Linux 服务器上运行 bash 脚本
为啥使用任务集在一组独立的内核上运行多线程 Linux 程序会导致所有线程在一个内核上运行?