2013-02-16 24 views
0

讓我解釋一下這個問題:使用特定的用戶運行在Java罐子

語境

我有這樣的應用程序,要更新。它會調用我也做過的更新器jar。更新程序會殺死運行舊版本的應用程序,並且更新程序會使用新版本啓動一個新的應用程序。

問題

新版本無法啓動,除非我運行jar我自己。增加睡眠並不能解決問題。

假設

或許運行更新應用程序的用戶是java的,它並沒有權限可運行新版本

我和我的用戶比這個Java應用程序運行運行第一個Java具有「java用戶」和java用戶的jar不能運行新版本。

有沒有一種方法可以指定用戶,當我運行我的jar與運行時。

Runtime.getRuntime().exec("C://Temp//myapp.jar"); 
+0

Windows或Linux?你的意思是新版本無法啓動? – 2013-02-16 00:46:34

+0

這是在Windows上 這是行不通的: Runtime.getRuntime()。exec(「runas/user:」+ utilisateur +「\」C:\\ somewhere \\ dfs \\ app.exe \「」); Process-proc = Runtime.getRuntime()。exec – user2077369 2013-02-16 00:51:05

+0

MyAppV100需要更新。它通過特定的操作接收命令。它調用更新器,這是一個外部的jar。更新程序殺死MyAppV100並啓動MyAppv200(但它永遠不會啓動,除非手動調用updater):(謝謝! – user2077369 2013-02-16 00:57:28

回答

0

如果您使用的是Windows環境,努力以下可以幫助你的事業

試命令窗口SYSTEM32路徑上

runas /showtrustlevels 

你應該得到類似以下內容:

C:\Windows\system32>runas /showtrustlevels 
The following trust levels are available on your system: 
0x20000 (Basic User) 

然後,您將獲得「基本用戶」的值並運行事端像下面克至開始罐子:

runas /trustlevel:0x20000 "java -jar yourfileName.jar" 

,或者你可以試試這個link它可能是有用的

+0

runas似乎不能解決我的問題...... :(謝謝! – user2077369 2013-02-16 01:09:41