金萬維的異速聯軟體,可以將應用程式發布,然后通過它的客戶端進行訪問。
搜索了一下,感覺他應該是使用的服務器的終端服務,請問大師,如何能讓應用程式不在終端環境下運行。
因為這樣,通過異速聯軟體,應用程式就沒發控制客戶端數量了,安裝一個站點,可以很多人使用,太可怕了!!!
請教大家如何能避免這種情況???萬分感謝
uj5u.com熱心網友回復:
只能運行一個實體呢uj5u.com熱心網友回復:
我研究了一下異速聯這個軟體,應該采用的是終端服務,控制你的程式只運行一個實體,通過互斥來實作是不可行的,因為每個程式都運行在不同的會話里的,你可以通過檔案或者注冊表之類的來控制程式只運行一次,如程式定時5秒寫一個檔案,如c:\1.txt,把當前時間寫到這個檔案里,在程式運行時判斷一下,如果這個檔案里的時間與當前時間比較不大于5秒,就不允許程式運行,提示已經運行,然后退出。
uj5u.com熱心網友回復:
感謝版主回復,我試試uj5u.com熱心網友回復:
一年多了,之前通過在注冊表里檢查是否安裝該軟體來控制的,現在被人發現規避過去了剛剛找到一個api,應該可以在根本上解決此問題
請教該API WTSQuerySessionInformation 怎么定義?
測驗,取的用戶名是亂碼?
uj5u.com熱心網友回復:
有下面兩個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,每個終端連接上去的時候都會唯一有個標識
uj5u.com熱心網友回復:
受教了。
uj5u.com熱心網友回復:
我只能說一下自己用過的方法。
//它顯然不是最好的,但至少是笨辦法中的一個。
//你肯用一年的時間來找一個問題的答案,證明它重要。所以再笨的方法,也值得一試。
我用硬體加密狗(就算最低端,TAOBAO上幾塊錢一個那種),它都有一個共享記憶體。(可能是幾K或甚至就是4個位元組)
你插上去了,整個機上,甚至整個互聯網上,不論多少個副本都只能用那一個存盤器。
A副本寫了"a"上去,B副本讀到的也一定是"a".
那么程式一上來,就寫自己的一個“亂數a”上去。讀到不是自己寫的那個"亂數a",就知道有多個副本在運行。
uj5u.com熱心網友回復:
國內神人真的無話 RD心血只要一個軟件 就被OK轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/22996.html
標籤:腳本語言
上一篇:xxxx.pbd沒有被指定在windows上運行,或者它包含錯誤
下一篇:pb程式連接的服務地址無法變更
