应用程序如何判断是运行在终端服务环境中的??

zhangyangziwo 2015-12-22 05:51:10
金万维的异速联软件,可以将应用程序发布,然后通过它的客户端进行访问。
搜索了一下,感觉他应该是使用的服务器的终端服务,请问大师,如何能让应用程序不在终端环境下运行。

因为这样,通过异速联软件,应用程序就没发控制客户端数量了,安装一个站点,可以很多人使用,太可怕了!!!

请教大家如何能避免这种情况???万分感谢

...全文
2849 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang5447 2017-02-20
  • 打赏
  • 举报
回复
國內神人真的無話 RD心血只要一個軟件 就被OK
kenshu 2017-01-29
  • 打赏
  • 举报
回复
引用 4 楼 zhangyangziwo 的回复:
一年多了,之前通过在注册表里检查是否安装该软件来控制的,现在被人发现规避过去了 刚刚找到一个api,应该可以在根本上解决此问题 请教该API WTSQuerySessionInformation 怎么定义? 测试,取的用户名是乱码?
我只能说一下自己用过的方法。 //它显然不是最好的,但至少是笨办法中的一个。 //你肯用一年的时间来找一个问题的答案,证明它重要。所以再笨的方法,也值得一试。 我用硬件加密狗(就算最低端,TAOBAO上几块钱一个那种),它都有一个共享内存。(可能是几K或甚至就是4个字节) 你插上去了,整个机上,甚至整个互联网上,不论多少个副本都只能用那一个存储器。 A副本写了"a"上去,B副本读到的也一定是"a". 那么程序一上来,就写自己的一个“随机数a”上去。读到不是自己写的那个"随机数a",就知道有多个副本在运行。
kenshu 2017-01-29
  • 打赏
  • 举报
回复
引用 5 楼 pb8 的回复:
有下面两个api就可以了 Function Ulong GetCurrentProcessId() Library "kernel32.dll" Alias for "GetCurrentProcessId" Function Ulong ProcessIdToSessionId(ulong uProcessid,ref ulong myid) Library "kernel32.dll" Alias for "ProcessIdToSessionId" 如果返回的myid为非0,就是在终端中运行的,每一个终端连上的时候会有一个不同的会话ID,你的授权站点加上这个就可以了 ProcessIdToSessionId(GetCurrentProcessId(),ref ll_session) ll_session就是终端的会话ID,每个终端连接上去的时候都会唯一有个标识
受教了。
pb8 2017-01-25
  • 打赏
  • 举报
回复
有下面两个api就可以了 Function Ulong GetCurrentProcessId() Library "kernel32.dll" Alias for "GetCurrentProcessId" Function Ulong ProcessIdToSessionId(ulong uProcessid,ref ulong myid) Library "kernel32.dll" Alias for "ProcessIdToSessionId" 如果返回的myid为非0,就是在终端中运行的,每一个终端连上的时候会有一个不同的会话ID,你的授权站点加上这个就可以了 ProcessIdToSessionId(GetCurrentProcessId(),ref ll_session) ll_session就是终端的会话ID,每个终端连接上去的时候都会唯一有个标识
zhangyangziwo 2017-01-20
  • 打赏
  • 举报
回复
一年多了,之前通过在注册表里检查是否安装该软件来控制的,现在被人发现规避过去了 刚刚找到一个api,应该可以在根本上解决此问题 请教该API WTSQuerySessionInformation 怎么定义? 测试,取的用户名是乱码?
WorldMobile 2015-12-23
  • 打赏
  • 举报
回复
引用 楼主 zhangyangziwo 的回复:
金万维的异速联软件,可以将应用程序发布,然后通过它的客户端进行访问。
搜索了一下,感觉他应该是使用的服务器的终端服务,请问大师,如何能让应用程序不在终端环境下运行。

因为这样,通过异速联软件,应用程序就没发控制客户端数量了,安装一个站点,可以很多人使用,太可怕了!!!

请教大家如何能避免这种情况???万分感谢


我研究了一下异速联这个软件,应该采用的是终端服务,控制你的程序只运行一个实例,通过互斥来实现是不可行的,因为每个程序都运行在不同的会话里的,你可以通过文件或者注册表之类的来控制程序只运行一次,如程序定时5秒写一个文件,如c:\1.txt,把当前时间写到这个文件里,在程序运行时判断一下,如果这个文件里的时间与当前时间比较不大于5秒,就不允许程序运行,提示已经运行,然后退出。
jlwei888 2015-12-23
  • 打赏
  • 举报
回复
只能运行一个实例呢
zhangyangziwo 2015-12-23
  • 打赏
  • 举报
回复
感谢版主回复,我试试

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧