طلب امتيازات المسؤول عن جافا التطبيق على ويندوز فيستا

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

سؤال

عند محاولة إنشاء مهمة جديدة في "جدولة المهام" عن طريق جافا ProcessBuilder الدرجة أحصل على خطأ "رفض الوصول" وهو نظام التشغيل Windows Vista.على XP يعمل على ما يرام.

عند استخدام "تشغيل كمسؤول" الخيار يعمل على ويندوز فيستا كذلك..

ومع ذلك هذا هو خطوة إضافية requeried أحد المستخدمين قد لا تعرف عن هذا.عندما يقوم المستخدم فقط مزدوج على أيقونة التطبيق سوف تفشل مع رفض الوصول.سؤالي هو كيف يمكنني قوة جافا التطبيق reuest امتيازات المسؤول مباشرة بعد بدء التشغيل ؟

هل كانت مفيدة؟

المحلول

وأنا لست متأكد من أنك يمكن أن تفعل ذلك برمجيا. إذا كان لديك المثبت التطبيق الخاص بك، يمكنك إضافة مفتاح التسجيل لإجبار تشغيل ك مشرف:

<اقتباس فقرة>   

ومسار:   HKEY_CURRENT_USER \ SOFTWARE \ مايكروسوفت \ ويندوز   NT \ كرنتفرسون \ Appcompatflags \ طبقات

     

ومفتاح: << المسار الكامل إلى exe >>

     

والقيمة: RUNASADMIN

     

ونوع: REG_SZ

نصائح أخرى

هل تعتبر التفاف تطبيق جافا الخاصة بك في إكس باستخدام launch4j؟ وبذلك يمكنك تضمين ملف البيان الذي يسمح لك لتحديد "مستوى التنفيذ" لتنفيذ الخاص بك. وبعبارة أخرى، يمكنك التحكم في الامتيازات التي ينبغي أن تمنح لتطبيق الجري، وقال بفعالية نظام التشغيل ل"تشغيل ك بمسؤول" دون مطالبة المستخدم يدويا القيام بذلك.

وعلى سبيل المثال ...

وbuild.xml:

<target name="wrapMyApp" depends="myapp.jar">
        <launch4j configFile="myappConfig.xml" />
</target>

وmyappConfig.xml:

<launch4jConfig>
  <dontWrapJar>false</dontWrapJar>
  <headerType>gui</headerType>
  <jar>bin\myapp.jar</jar>
  <outfile>bin\myapp.exe</outfile>
  <priority>normal</priority>
  <downloadUrl>http://java.com/download</downloadUrl>
  <customProcName>true</customProcName>
  <stayAlive>false</stayAlive>
  <manifest>myapp.manifest</manifest>
  <jre>
    <path></path>
    <minVersion>1.5.0</minVersion>
    <maxVersion></maxVersion>
    <jdkPreference>preferJre</jdkPreference>
  </jre>
</launch4jConfig>

وmyapp.manifest:

<?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>  

http://msdn.microsoft.com/en-us/library /bb756929.aspx و موقع launch4j للحصول على تفاصيل الوضع.

على الرغم من FreeCouch الجواب هو جيد ولكن واجهت بعض المشاكل و التفكير في وضعه هنا حتى في المرة القادمة الآخرين يمكن أن يكون استفاد بسهولة.

للحصول على المسؤول إذن في جاوة ، بقدر ما وجدت الحل هو التفاف *.جرة داخل *.exe مع برنامج مثل Launch4J و ملزم يعبر عن ذلك.

لإنشاء ملف البيان ، فتح أي محرر نص مثل المفكرة ولصق هذه السطور في ذلك وحفظه مع اسم ملف مع ملحق هـ.g: myApplication.exe.واضح

<?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>  

في Launch4J ، Basic علامة التبويب إضافة هذا الملف في مجمع البيان الخيار.

ولم أجد أفضل حل حتى الان. ولكن لدي عمل حول بديل يقارن ب "جيمس فان الهوي". استخدام RUNASINVOKE بدلا لذلك لم يكن لديك لرؤية موجه السماح / رفض في كل مرة تقوم بتشغيل التطبيق.

ملحوظة: يجب عليك دائما أن يكون المسؤول، أن ما أحاول أن حل

باستخدام launch4j Gradle المساعد

خصوصا عندما تستخدم بالفعل Gradle ، فمن السهل أن تطبق launch4j المساعد لإصلاح هذه.

كما في freecouch' الجواب, إنشاء ملف myapp.manifest مع

<?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> 

ثم تطبيق Gradle المساعد إضافة إلى build.gradle

plugins {
  id 'java'
  id 'edu.sc.seis.launch4j' version '2.4.3'
}

launch4j {
    mainClassName = 'com.mypackage.MainClass'
    icon = "$projectDir/icons/icon.ico"
    manifest = "$projectDir/myapp.manifest"
}

أو في حالة استخدام Kotlin Gradle DSL ، build.gradle.kts:

plugins {
    application
    kotlin("jvm") version "1.2.31"
    java
    id("edu.sc.seis.launch4j") version "2.4.3"
}

launch4j {
    mainClassName = "com.mypackage.MainKt"
    icon = "$projectDir/icons/icon.ico"
    manifest = "$projectDir/myapp.manifest"
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top