ابدأ عملية Java Runtime مع حقوق المسؤول على نظام التشغيل Vista

StackOverflow https://stackoverflow.com/questions/1420901

سؤال

أرغب في تنفيذ برنامج التثبيت 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top