كيف يمكنني اكتشاف ما إذا كانت الوظيفة متاحة أثناء تنفيذ JNLP؟
-
09-06-2019 - |
سؤال
لدي التطبيق الذي حقًا يجب تثبيته، ولكنه يعمل بشكل جيد عند نشره باستخدام JNLP.
ومع ذلك، يبدو أن بعض وظائف Java مثل Runtime.exec
لا تعمل باستخدام خيارات الأمان الافتراضية.
أود لذلك إبطال وظائف واجهة المستخدم التي تعتمد على مثل هذه الوظائف.
لذلك سؤالي هو، كيف يمكنني اكتشاف في وقت التشغيل ما إذا كانت وظائف معينة متاحة أم لا؟
دراسة الحالة هنا بالطبع هي Runtime.exec
.
المحلول
تريد أن تسأل إلى مدير الامن إذا كان لديك حق Exec باستخدام طريقة checkExec.
نصائح أخرى
لقد وجدت أيضًا إضافة ما يلي إلى ملف JNLP:
<security>
<all-permissions/>
</security>
ويتيح التوقيع على ملف JAR تشغيل التطبيق بجميع الأذونات اللازمة له Runtime.exec
.
بالنسبة للمثال المحدد لـ Runtime.exec، توجد طريقة في فئة SecurityManager checkExec(String cmd) والتي ستطرح استثناءً يمكن اكتشافه لتحديد ما إذا كان من الممكن تنفيذ الأمر الضروري.لمزيد من المعلومات، راجع javadoc لـ Runtime.exec وSecurityManager.checkExec.
تتطلب الحالة الأكثر عمومية إنشاء كائن إذن يمثل المهمة التي يتم فحصها وتشغيل طريقة checkPermission الخاصة بـ SecurityManager.