我在这里重新问了这个问题,因为 ServerFault deemed that this is the appropriate place to ask this 的人.
我试图阻止人们多次登录一台计算机并同时使用我的应用程序。 换句话说,我想防止它在同一台计算机上同时运行两次在任何给定时间,只有一个用户运行我的应用程序。
我将许可证使用设置得如此严格是有原因的;我的应用程序服务于一个非常专业和非常小众的市场。因此,每个副本的成本都在数万左右。如果这种多重远程登录技术得到重视,我很快就会倒闭。
这是因为我想阻止他们购买一个许可证,将其安装在一台机器上,并使用某些远程桌面技术进行多用户登录。 我想阻止他们技术上违反许可协议(protocol),而不是执法。
无论如何,我可以在我的申请中做些什么吗?还是根本不可能同时进行多个登录?
我更喜欢非加密狗解决方案。我的应用程序仅在 Windows 上运行。
编辑:为了让事情更复杂,我允许同时访问不同版本(我的客户可以在一台机器上安装同一软件的多个版本并同时启动它们)。我只是不允许同时远程登录。
最佳答案
让我澄清一下我的观点。至少 silky,我似乎以不同的方式对此进行了解释。
据我了解,您试图阻止多个用户(或同一用户的多个实例)同时登录计算机。在这种情况下,您假设机器的唯一目的是运行您的应用程序,但通常情况并非如此。
使用 silky 的方法(系统范围互斥锁)来防止多个实例在同一台机器上运行是可以接受的。就我个人而言,在采用这种方法之前,我想确保单个用户运行您的应用程序的两个实例来完成一项任务没有有效的用例。
另见 programmer's pet peeve .防止多个用户使用同一台机器属于同一类;)
至于您的多版本问题:为您的应用程序的每个(主要?)版本的系统范围互斥体选择一个唯一的名称。
系统级互斥量的基本示例:
static class Program
{
private static Mutex appMutex = new Mutex(false, "Global\\MyApp 1.0");
[STAThread]
static void Main()
{
if (!appMutex.WaitOne(0))
{
MessageBox.Show("Application is already running. Have a nice day.");
return;
}
// ...
}
}
Global\ 前缀使互斥量在多个终端服务器 session 中共享。没有它,它只会阻止用户在同一 session 中运行两个实例。
您应该在权限受限的帐户上测试此方法,因为受限帐户可能根本无法创建此类互斥体。
关于.net - 防止多次登录同一台计算机的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304397/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO