2013-09-26 48 views
19

Tôi đã tạo một Ứng dụng Java và tôi đã thử nghiệm nó trên máy tính của tôi và máy tính của tôi, cho đến nay ... Nhưng ứng dụng này dành cho một người bạn khác của tôi có sàn nhảy , khi tôi "cài đặt" ứng dụng của tôi trên máy tính của mình (Windows Vista 32 bit) nó không hoạt động, sau đó tôi đi tìm kiếm và tìm kiếm và tôi phát hiện ra rằng vấn đề là đặc quyền ... Tôi đã cài đặt một máy ảo vista 32 bit và xp 32 bit để thực hiện một số kiểm tra và tôi không thể chạy ứng dụng của mình với đầy đủ các đặc quyền của quản trị viên.Chạy tệp Java với tư cách Quản trị viên với đầy đủ các đặc quyền

Có cách nào để tạo tệp lô hoặc thứ gì đó có thể cho phép tôi chạy ứng dụng của mình với tất cả các đặc quyền không? Ý tôi là tất cả vì tôi cần kết nối với cổng COM của máy tính để lấy dữ liệu từ thiết bị và tôi cần lưu trữ một số tệp và vì tôi đang sử dụng thư viện bên ngoài, tôi có thể cần một số đặc quyền mà tôi không biết ... tôi đã cố gắng này và không có gì hoạt động:

elevate "c:\Program Files\Java\jre\bin\java.exe" -jar "%CD%\installer.jar" 

sử dụng các kịch bản Nâng cao từ microsoft, tôi cũng đã tạo ra một tập tin batch với

runas /user:Administrator myjar.jar 

nhưng không làm việc: \ Bất kỳ ý tưởng? cảm ơn bạn trước

Trả lời

35

Câu trả lời này dành cho những người đang muốn cung cấp đặc quyền quản trị cho các lọ hoặc lớp java của họ. Sau khi phát triển thành công một exe để chỉnh sửa các tập tin được lưu giữ trong admin. Các thư mục bị hạn chế, tôi đã phát triển các bước này để theo dõi bạn, hy vọng điều này có thể giúp bạn: Những điều cần hiểu: 1) Chum sẽ không được biên dịch trực tiếp với các đặc quyền thay vào đó, bạn phải gói chúng với một số tệp mainfest khác có các tập tin exe có khả năng chạy trên windows xp/vista/hoặc phiên bản cao hơn với các đặc quyền. Trên thực tế, câu trả lời có thể có bây giờ là trước khi chạy, exe buộc người dùng phải cung cấp quyền quản trị không giống như trước khi người dùng được mong đợi biết cách chạy jar với quyền quản trị không thân thiện.

Bây giờ, hãy thực hiện các bước đơn giản: 1) Tạo tệp jar của bạn như try2.jar chứa một số tệp mainifest-- My1.mf như thường lệ.So, đường dẫn tuyệt đối của tệp jar sẽ là C: \ try.jar .

2) Bây giờ bạn cần phải tải về một phần mềm "Launch4j" mà sẽ giúp bạn quấn files.Its jar liên kết tải về là: http://sourceforge.net/projects/launch4j/files/launch4j-3/3.1.0-beta2/

3) Bây giờ đưa ra 5 phút. và xem hướng dẫn này: http://www.youtube.com/watch?v=mARUFRknTYQ; điều này sẽ cho bạn biết các chức năng cơ bản của Launch4j. Nhưng ở đây nó sẽ không được rõ ràng làm thế nào để tạo ra một tập tin manifest cho exe của bạn.

3) Sau khi tìm hiểu điều này, sau đó tạo tệp kê khai, đó là tệp văn bản đơn giản có phần mở rộng ".manifest" được lưu. Nhưng ở đây một số điều cần được quan tâm: Thứ nhất, tập tin mainfest của bạn phải có cùng tên như của exe cuối cùng của bạn sẽ được tạo ra. Trong trường hợp của tôi, tên của exe của tôi được coi là "Launchme.exe" do đó, tệp kê khai của tôi phải được đặt tên là "Launchme.manifest". Thứ hai, trong tệp kê khai chỉ sao chép nội dung này:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
<security> 
<requestedPrivileges> 
<requestedExecutionLevel level="highestAvailable" uiAccess="False" /> 
</requestedPrivileges> 
</security> 
</trustInfo> 
</assembly> 

sao chép mã trên vào tệp kê khai của bạn. ở đây dòng 6 là chìa khóa của toàn bộ vấn đề. Sau đó lưu nó và đóng nó lại.

4) Bây giờ bắt đầu Launch4j, điền vào tất cả các trường văn bản được dạy như trong video theo điều kiện của bạn. Trong cột mainfest Wrapper, hãy thêm tệp kê khai tệp này. Sau đó nhấp vào tùy chọn "lưu cấu hình" và sau đó nhấp vào-- Xây dựng trình bao bọc.

Bây giờ bạn có exe chứa jar của bạn yêu cầu người dùng cấp quyền quản trị trước khi thực thi.Giờ đây, người dùng không phải biết bất kỳ điều gì khác ngoài nhấp chuột!

+0

Mặc dù tôi chưa thử nghiệm câu trả lời của bạn nhưng điều đó có vẻ đầy hứa hẹn. Cảm ơn câu trả lời như vậy. –

+0

Câu trả lời hay! cảm ơn (+1) – Danielle

+2

Xin lỗi bạn đã quay lại bài đăng cũ như vậy, nhưng có cách nào để loại bỏ "nhà xuất bản không rõ" bất cứ khi nào nó yêu cầu quyền quản trị? – Maverick283

1

Chạy lời nhắc lệnh của bạn trong chế độ quản trị viên. Để cụ thể hơn: 1. Tìm tệp% windir% \ system32 \ cmd.exe. 2. Nhấp chuột phải và chạy với tư cách là đặc quyền quản trị viên.

6

Tôi đã tạo giải pháp dựa trên Java chung cho vấn đề này trên github tại https://github.com/rritoch/super-user-application. Hệ thống sử dụng JNA hoặc Sudo để cung cấp một ứng dụng java nền tảng chéo (jar) thực hiện với quyền quản trị viên. Cách dễ nhất để sử dụng nó là để lớp chính của bạn mở rộng lớp trừu tượng SuperUserApplication và gọi SU.run (new MyMain(), args) từ hàm chính của bạn như sau.

package com.vnetpublishing.java; 

import com.vnetpublishing.java.suapp.SU; 
import com.vnetpublishing.java.suapp.SuperUserApplication; 

public class TestAdmin extends SuperUserApplication { 

    public static void main(String[] args) { 
     SU.run(new TestAdmin(), args); 
    } 

    public int run(String[] args) { 
     System.out.println("RUN AS ADMIN! YAY!"); 
     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     return 0; 
    } 
} 

Thư viện này đã được thử nghiệm trên linux và windows, nhưng cũng nên hoạt động với Mac/OSX. Hạn chế chính với giải pháp này là nó chỉ hoạt động khi ứng dụng được thực hiện như một cái bình. Khi jar được thực hiện không có quyền quản trị viên, nó cần phải thực thi lại các bình với các đặc quyền của quản trị viên. Nếu ứng dụng không được chạy từ một cái lọ, nó sẽ đưa ra một InvalidStateException.

Hãy thoải mái đóng góp cho dự án này.

+0

Bạn có tệp jar này đã được xây dựng để tôi có thể nhanh chóng thêm nó vào một dự án tôi đang làm trong netbeans không? Nếu không, bạn có thể giải thích làm thế nào để biên dịch điều này trong netbeans? Tôi không muốn bị quạ nếu đó là một yêu cầu. –

+0

Chỉ cần tải xuống từ maven http://mvnrepository.com/artifact/com.vnetpublishing.java/super-user-application/0.0.5 –

Các vấn đề liên quan