我正在编写针对我们产品的许可申请。它不是非常详细和复杂,但它对我们的业务有用。
许可证将硬件(我在.net 中获得的 3 件)与工作站 ID 联系起来,工作站 ID 在程序执行时作为选项传递。因此,工作站 ID XXX 被授权在计算机 YYYYY 上运行。
我发现的唯一漏洞是,当他们只被授权运行一次时,他们可以通过 RDP 多次运行该应用程序。通常,他们
如何分配许可证以防止他们在获得较少许可的情况下多次从不同会话运行应用程序?
由于它是在对等 2 对等网络上运行,因此大多数时候,我不能依靠检查任务管理器来查看程序启动时正在运行的内容。
有人对我可以在 RDP 连接上跟踪哪些内容以绑定许可证有任何建议吗?
谢谢!
I am writing a licensing application that is specific to our product. It is not highly detailed and elaborate but it will work for our business.
The license ties the hardware (3 pieces I obtain in .net) with the workstation id that is passed as a option when the program is executed. So, workstation id XXX is authorized to run on computer YYYYY.
The only loophole that I've seen in it is that they can run the application several times over RDP when they are only licensed to run once. Typically they
How can I assign a license to prevent them from running the application from different sessions multiple time when they are licensed for less?
Since this is run on peer 2 peer networks, most of the time, I can't rely on checking the task manager to see what is running at the time the program starts.
Anyone have any suggestions on what I can track on an RDP connection to tie a license to?
Thanks!
发布评论
评论(1)
如果我正确理解您的目标,您希望阻止他们更频繁地运行该应用程序而不是获得许可...并且您写道您已经解决了该问题,除了该应用程序在不同会话中的同一台计算机上运行的情况...
如果是这样的话您只需要一种机制来防止在同一台计算机上再次启动应用程序(即使在不同的会话中)...您可以使用全局互斥体来实现这一点...请参阅 http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx
基本上,您创建一个名为
Global\
的互斥体名称的前缀...如果该互斥体已经存在,则该应用程序已经在此计算机上运行(在相同或不同的会话中)...如果您只想防止它在同一会话中再次运行,您可以使用Local\
作为前缀...If I understand your goal correctly you want to prevent them running the app more often thatn licensed... and you write you already solved that except for the situation where the app is running on the same machine in different sessions...
IF so then you only need a mechanism to prevent starting the app a second time on the same machine (even in a different session)... you can use a global Mutex to achieve that... see http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx
Bascially you create a named Mutex with
Global\
as the prefix of the name... if that Mutex already exists then the app is already running on this machine (in the same or a different session)... if you want only to prevent it running a second time in the same session you useLocal\
as the prefix...