2011-10-21 99 views
0

我想在計算機上安裝監控系統(該程序是一個jar文件),並在每次用戶登錄時啓動時運行它。但是,我不希望用戶能夠終止它,因爲它不能再被監視。防止用戶終止Java程序?

我們已經嘗試了幾種方法:

  • 安裝它作爲服務 - 這裏的問題是,我們的程序不能正常工作下去;它無法連接到正在監視它的計算機。我們爲此使用了「另一個Java服務包裝器」,並研究了一些其他包裝器,以幫助我們將其作爲服務安裝。

  • 在啓動時運行程序(使用文件夾啓動),但沒有給予基本用戶編輯/刪除/亂用文件的權限。但是,這似乎會減慢整個計算機的速度?當我們直接運行執行jar的bat文件時,不會發生這種情況。與此有關的另一個問題是,用戶可以去任務管理器並殺死Java進程。

  • 我們嘗試了前一個版本的變體,通過另一個進程來解決被殺死進程的問題。一個會產生另一個,這兩個進程將互相標記。如果終止,另一個檢測到它並運行它再次啓動它。雖然如果用戶在兩次進程再次重新生成之前殺死兩個進程的速度足夠快,那麼它可能會出現問題,但更大的問題是它有時會在連接到其他計算機時出現問題。當它只有一個罐子時,我們沒有這個問題。

有沒有人有任何想法如何解決這些問題?

這裏的上下文是windows,但是如果你有對linux和mac的建議,那也不錯!

+3

你應該找出爲什麼你的代碼將不作爲服務工作。這是標準的Windows方式,以確保您的應用程序保持運行。 – ObscureRobot

+0

它好像有問題通過網絡連接到其他計算機。港口是開放的,但它沒有收到任何東西。作爲服務運行的程序是否受限於他們能夠做的事情? – Angeline

回答

1

要走的路是將程序作爲服務運行。您應該調查應用程序和系統防火牆之間的任何問題。如果您激活了Windows防火牆,則應該爲java.exe或javaw.exe添加一個例外。

爲了給您的程序提升權限,您可以將服務設置爲以另一個用戶身份運行。您可以通過服務屬性中的「登錄」選項卡執行此操作。

Service properties

+0

感謝您的屏幕截圖以及在哪裏可以找到設置的信息!我現在設法解決它......以高級用戶身份運行它不起作用。使用本地系統帳戶時,我必須勾選「允許服務與桌面交互」選項。這解決了它。 非常感謝您的幫助! – Angeline

+0

Tanuki Software創建了一個體面的程序來處理這個問題.http://wrapper.tanukisoftware.com/doc/english/download.jsp –

0

你會想讓程序在具有提升權限的用戶下啓動。在WIndows上這將是管理員,Linux將使用root。在Windows上,您可能需要將其作爲服務啓動。但我真的不知道爲什麼會阻礙網絡通信。

+0

感謝您的回覆!我現在設法解決了這個問題......原來這不是網絡通信問題,但收到的信息無法顯示,所以我認爲這是一個網絡問題。你對權限是正確的 - 我嘗試再次運行它作爲一個Windows服務。讓它起作用的是我必須勾選「允許服務與桌面交互」選項。這解決了它。 – Angeline