ابدأ عملية Java Runtime مع حقوق المسؤول على نظام التشغيل Vista
-
07-07-2019 - |
سؤال
أرغب في تنفيذ برنامج التثبيت setup.exe الذي يقوم بتثبيت برنامج على نظام التشغيل Vista باستخدام Java 1.6.
المستخدم ليس مسؤولاً.عندما أحاول بدء العملية تظهر لي رسالة الخطأ:
CreateProcess error=740
مما يشير إلى أن المستخدم ليس لديه الحقوق الكافية لبدء العملية.
هل يمكنني إرسال علامة أو خيار للإشارة إلى أنه يجب تنفيذ العملية باستخدام حقوق المسؤول؟يحتوي نظام التشغيل Vista نفسه على هذه الوظيفة داخل شريط أدوات القائمة.هل يمكنني استخدام هذه الوظيفة في Java.
أنا أسمي الكود التالي
Runtime rt = Runtime.getRuntime();
Process process;
try {
String fileToExecute = new File(mFolder, mSetupFiles[0]).getCanonicalPath();
if (logger.isDebugEnabled()) {
logger.debug("Execute runtime process");
}
process = rt.exec(fileToExecute, null, mFolder);
process.getErrorStream().close();
process.getInputStream().close();
process.getOutputStream().close();
if (logger.isDebugEnabled()) {
logger.debug("Wait until process is finished");
}
process.waitFor();
} catch (IOException e) {
throw new StartException(e);
} catch (InterruptedException e) {
throw new StartException(e);
}
المحلول 2
بعد يومين من الاختبار وجدت الحل التالي.
يظهر الخطأ عند تنشيط وظيفة Vista UAC.يعرض UAC مربع حوار سؤال في كل مرة، عندما تحتاج العملية إلى حقوق المسؤول.
يؤدي عرض مربع الحوار هذا إلى حدوث المشكلة.
بدلا من استخدام القديم
process = rt.exec(fileToExecute, null, mFolder);
الأمر، وأنا الآن باستخدام 1.5 الجديد ProcessBuilder يأمر
يحرر:
لتجنب المشكلة عليك فتح نافذة الأوامر التي تطلب الإذن.ومن عليك استدعاء العملية الخارجية.
ProcessBuilder builder = new ProcessBuilder(new String[] { "cmd.exe", "/C", fileToExecute });
الموصوفة هنا أيضا تنفيذ برنامج خارجي
نصائح أخرى
و(لم أحاول ذلك)، ولكن يبدو أنه يمكنك القيام بذلك باستخدام برنامج "رفع" من <لأ href = "http://www.gilham.org/Blog/Lists/Posts/Post.aspx قائمة = aab85845-88d2-4091-8088-a6bbce0a4304 & ID = 265 "يختلط =" نوفولو noreferrer "> هنا
هذا للحصول على نظرة عامة UAC