سؤال فرض برنامج لتشغيل * دون * امتيازات المسؤول أو UAC؟


هل هناك أي طريقة يمكنني بها فرض برنامج يتطلب عادةً امتيازات المسؤول (عبر UAC) للتشغيل بدونها؟ (أي: لا UAC مطالبة و لا يوجد وصول على مستوى النظام.)

وأضاف: دون تعديل الملف التنفيذي نفسه.


على الرغم من إجابة جيمس ، فقد وجدت بعض الطرق التي يمكن بها تقريبيا تتم:

  1. عن طريق تعديل الملف التنفيذي يمكنني إزالة trustInfo دخول من البيان (أو البيان كليا ، حتى أتمكن من استخدام واحد خارجي) ، والسماح للبرنامج لبدء دون UAC. لسوء الحظ هذا يعدل الملف القابل للتنفيذ ، لذلك يخرج بعد فترة وجيزة بسبب اختبار اختباري داخلي.
  2. باستخدام Process Explorer يمكنني تشغيله كمستخدم محدود. ومع ذلك يبدو أن هذا يحدها بشكل كبير أكثر مما أريد (إنه يعمل مثل Protected Mode IE وبذلك يمكن الوصول إلى أقل بكثير مما يمكن للمستخدم القياسي غير المرتفع).

103
2017-08-04 13:49


الأصل


تحديد عدم تعديل الملف التنفيذي ، ولكن تعديل .exe هو أحد طرق المحاولة الخاصة بك؟ - cutrightjm
ekaj أنا المحدد الوحيد ذلك بعد اكتشفت أنه لن ينجح ؛) - Andrew Russell
هل من الممكن أن تحدد البرنامج ، حتى لو لم تستخدمه بعد الآن؟ قد يساعد ذلك الأشخاص في معرفة ما تحاول الوصول إليه والذي يتطلب امتيازات المسؤول - cutrightjm
ekaj للأسف لا. على الرغم من أنه ليس ذو صلة بشكل خاص: يتم تشغيل UAC بواسطة برنامج يسأل عن الارتفاع أثناء إنشاء العملية (الطريقة المعتادة - كما في هذه الحالة - تكون مع بيان). بمجرد بدء العملية ، لا يمكنها تغيير حالة الارتفاع - بغض النظر عن الموارد المحدودة التي تحاول الوصول إليها. - Andrew Russell
إذا لم يتضمن البرنامج بيانًا ورفض تشغيله بدون امتيازات المسؤول ، فمن المرجح أن يكون ذلك بسبب اكتشاف UAC Installer. لقد نشرت هذا السؤال و misha256 لديه حل جيد. لقد اختبرت ذلك ويمكنني أن أؤكد أنه يعمل. superuser.com/questions/857616/... لقد أجريت بعض الأبحاث ووجدت أنه لا يوجد سبب لاكتشاف برنامج التثبيت. لاحظ أنه إذا كانت امتيازات المشرف ناتجة عن إدخال trustinfo في بيان ، فمن الواضح أن هذا لن يعمل. - user1258361


الأجوبة:


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

احفظ هذا النص في <name_of_file>.reg وإضافته إلى سجل ويندوز. (يجب أن يؤدي النقر المزدوج عليه إلى تنفيذ المهمة).

بعد ذلك ، انقر بزر الماوس الأيمن على التطبيق الذي ترغب في تشغيله بدون امتيازات إدارية وحدد "تشغيل بدون امتياز الامتياز".

في بعض الحالات - قد يسأل مبلغ صغير بنسبة 0.1٪ من البرامج مرتين عن طلب UAC.


62
2017-07-18 15:20



اعتدت على استخدام رزمة أدوات توافق التطبيقات ، ولكن هذا كان الكثير من العمل لكل خردة قابلة للتنفيذ واليسار في السجل لكل ملف كذلك. هذه الطريقة تعمل وأحبها أفضل بكثير. - Ben Voigt
قبول هذا كما يبدو أنه الأسلوب الأكثر مباشرة ، ولقد (أخيرا!) تمكنت من التحقق من ذلك. لديها أيضا خاصية لطيفة جدا من كونها قابلة للاستخدام بشكل طفيف كخط قيادة لمرة واحدة (إزالة الخارجي " ثم اتجه \" إلى "). - Andrew Russell
Vom - هل تعرف طريقة سهلة للحصول على برامج سابقة تسأل عدة مرات؟ شكر! - Derek
لدي نفس المشكلة مثلDerek ، يبدو أن التطبيق مستمر في إعادة طلب UAC ، وأنا لا أثق به مع وصول واسع للنظام ولكن أحتاج إلى وظائفه .. - Gizmo
@ jpmc26 أعتقد أن /min هو خطأ. الحل يعمل بالضبط نفس دون ذلك. يجب أن يكون Vom مختلطة cmd و start التبديل. يبدو أن cmd.exe لا يشكو من مفاتيح خاطئة. محاولة cmd /whatever، فمثلا. - cdlvcdlv


حفظ في nonadmin.bat:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

الآن يمكنك سحب البرامج وإفلاتها لتشغيلها بدون مشرف.

لا يتطلب ذلك امتيازات المسؤول مثل تغيير مفتاح التسجيل هذا. كما أنك لن فوضى في قائمة السياق.

على أساس فوم إجابة


تحديث: يجب أن تعمل الآن مع البرامج التي تحتوي على مسافات في الاسم كذلك.


35
2017-10-02 11:27



لقد جربتها في بعض البرامج التي تتطلب الوصول إلى محركات الأقراص الخاصة بي ولم تتمكن من اكتشافها أو لم تعمل في المقام الأول: / (روفوس rufus.akeo.ie فمثلا) - keinabel
keinabel من المحتمل أن يكون ذلك بسبب احتياجهم فعليًا إلى العمل الإداري. هذا البرنامج النصي مخصص للبرامج التي تتطلب امتيازات المسؤول دون القيام بأي شيء يتطلب ذلك. الوصول الخام إلى محركات الأقراص هو شيء مسؤول نموذجي. - Hjulle
أنيق جدا! كان قادرا على تثبيت XAMPP باستخدام هذه الطريقة. - Krishnaraj
يبدو أن هذا لا يعمل بالنسبة لي لأي ملفات تنفيذية في الدليل "C: \ Program Files \ ...". أنا أحصل على Windows cannot find 'C:\Program'. Make sure you typed the name correctly, and then try again. لقد حاولت هذا الأمر يدويا عدة مرات مع اختلافات طفيفة وليس حظا. أيه أفكار؟ - Jake Smith
كان لي نفس المشكلة مع موقع الملف في مجلد بمسافات. تم حلها لإزالة بعض علامات الاقتباس المزدوجة: cmd / min / C "set __COMPAT_LAYER = RUNASINVOKER && start" "٪ 1" - ragnar


آمل ألا أكون متأخرا جدا للحفل ، ولكن كنت أبحث عن سؤال مماثل وبدون رؤية الإجابة هنا وجدت أن ويندوز 'مدمج RunAsالأمر ، عند تشغيله كمسؤول ، يمكنه القيام بذلك باستخدام /trustlevel مفتاح كهربائي.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels  displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel       <Level> should be one of levels enumerated
                  in /showtrustlevels.

هذا العمل في حالتي. ومن المفارقات ، بدء برنامج صراحة دون الارتفاع يتطلب موجه أوامر مرتفعة. إذهب واستنتج. :) وآمل أن يساعد أنت.


31
2018-01-05 08:15



أستطيع أن أؤكد أن هذا لا يعمل. لقد اختبرت للتو وحصلت على خطأ: "خطأ في RUNAS: غير قادر على التشغيل - (اسم البرنامج هنا). تتطلب العملية المطلوبة الارتفاع". - user1258361
@ user1258361 لديك لتشغيل هذا الأمر من موجه مرتفعة ، مثلما كتبت بخط عريض ... - Mxx
لا يبدو أنها تتطلب مطالبة مرتفعة على Windows 7 ... - SamB
تم اختبار البرنامج باستخدام موجه سريع ، يستخدم سطر الأوامر runas / trustlevel: 0x20000 (برنامج) ، كمشرف على أي حال. كمرجع ، يعتبر 0x20000 مستخدمًا أساسيًا. - user1258361
يتطلب موجه أوامر مرتفعة... بالطبع لا. وإلا أنت سابقا دون حقوق المسؤول وأي عملية تبدأها ستفتقر أيضا لهم. - Twisty Impersonator


إذا كان لديك تطبيق معين تريد تشغيله دائمًا بدون UAC ، فيمكنك استهدافه بواسطة السجل (إضافة النص إلى ملف REG واستيراده إلى السجل):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\example\\application.exe"="RunAsInvoker"

على عكس هذا الجواب، لا يتطلب هذا الحل أي نقرة بديلة أو تغيير لتفاعل المستخدم.

مايكروسوفت تدعو هذه العملية مضيفا RunAsInvoker  "التوافق شيم".


9
2017-09-09 20:16



الجواب على سؤال مختلف ، ولكن ذات الصلة قدمت الإلهام لهذه الإجابة. - palswim
شكرا جزيلا! كان هذا هو الشيء الوحيد الذي يعمل بالنسبة لي! كان لدي تطبيق والذي تم استدعائه من قائمة سياق Windows ، وكان دائمًا ما يأتي كمسؤول ، على الرغم من أنه تم استدعاؤه بشكل صحيح من أي مكان آخر. بعد هذا الإصلاح ، بدأ استدعاء التطبيق بشكل صحيح. - user
شكرا لكم. حل الآخر يعمل بشكل جيد بالنسبة لي ، ولكن من الجيد أن نرى كيف أن الآلية الأساسية المستخدمة من قبل الحشوات هي مستعمل إلى قابل للتنفيذ. - 0xC0000022L


أنا حل هذه المشكلة اليوم باستخدام مجموعة أدوات التخصيص التطبيق MS.

اتبعت التعليمات في مقالة الجمهورية التقنية: http://www.techrepublic.com/blog/window-on-windows/selectively-disable-uac-for-your-trusted-vista-applications/635

في الأساس:

1) تحصل على تاكيت من MS هنا .

2) انقر فوق إصلاح

3) اختيار RunAsInvoker اختيار

4) الحق انقر فوق الإصلاح واختر تثبيت


2
2018-05-18 01:05



إجابتك يفعل بالضبط عكس التأثير المطلوب. كان السؤال الأصلي هو كيفية فرض تطبيق يسأل عن امتيازات مرتفعة ليعمل دون رفع. ما زالت إجابتك تستخدم UAC ، ولكنك فقط تعطل هذه المطالبة. هذه إجابة خاطئة لهذا السؤال. - Mxx
mxx في الواقع لا. إذا كان المستخدم الحالي محدودًا (أو لديك تمكين UAC) ، فستبدأ العملية بامتيازات محدودة تمامًا. - LogicDaemon
LogicDaemon إذا كنت تقرأ المقالة فعليًا ، سترى أنه إذا اتبعت هذه الخطوات ، عليك تشغيل التطبيق كمسؤول دون مطالبة UAC. وهذا عكس ما طلبه OP. - Mxx
mxx كلا. واصل القراءة شبكة التكنولوجيا ما يفعله RunAsInvoker بالفعل. هذا هو بالفعل ما طلب الموضوع ، على الرغم من أن هذا لا يعمل إلا مع التطبيقات الأقدم. - LogicDaemon
طالما كان Explorer ، أو cmd غير مسؤول ، أو أي عملية قياسية أخرى هي الأصل ، فسوف يعمل RunAsInvoker بنفس الحقوق المحدودة. (يتم تشغيل برنامج Explorer مقيدًا بشكل افتراضي ، وإلا لن يطلب منك رفع مستوى لحذف ملف.) يبدو أنه يعمل بالفعل مع التطبيقات الجديدة. RunAsInvoker يعني أنه يرث رمز ACL نفسه بالضبط. - SilverbackNet


أصلحت هذه المشكلة عن طريق الذهاب إلى تغيير الأذونات على المجلد الذي يحتوي على البرنامج.

قمت بإضافة كل مستخدم يقوم بتشغيل هذا البرنامج ومنحهم امتيازات "التحكم الكامل". هذا اعتنى المشكلة وغادرت "تشغيل كمشرف" غير محددة.

ليس لدي أي مخاوف أمنية للمستخدمين الذين سيديرون البرنامج.


0
2018-04-20 04:28





بينما ذكر أندرو في سؤاله أن ما يلي لم ينجح تمامًا:

عن طريق تعديل الملف القابل للتنفيذ يمكنني إزالة إدخال trustInfo من   واضح (أو البيان بشكل كامل ، حتى أتمكن من استخدام واحد خارجي) ،   السماح للبرنامج بالبدء بدون UAC. للأسف هذا يعدل   الملف التنفيذي ، لذلك يخرج بعد فترة وجيزة بسبب وجود المجموع الاختباري الداخلي   اختبار.

لقد تمكنت من تعديل ملف خارجي خارجي للبرنامج الذي كنت أستخدمه وأغيره

<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

إلى

<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />

تبين أن البرنامج الذي كنت أستخدمه لم يتطلب حقًا حقوق المسؤول حتى تمكنت من تشغيله على حساب مستخدم قياسي بدون كلمات مرور UAC أو مسؤول. شكر!


0
2017-07-21 02:56





لا ، إذا كان البرنامج يتطلب UAC ، فحينئذٍ يحاول الوصول إلى شيء خارج الصندوق. لن يعمل البرنامج بشكل صحيح بدون الوصول المرتفع.

إذا كنت تريد فقط التخلص من الإشعار ، فيمكنك تعطيل UAC.

تعطيل UAC على نظام التشغيل Windows Vista: ابدأ ، اكتب "المستخدم". انقر على "حسابات المستخدمين". على النافذة المنبثقة ، انقر على "إعدادات التحكم في حساب المستخدم" ، ثم أوقف تشغيل UAC.

تعطيل UAC على نظام التشغيل Windows 7: ابدأ ، اكتب "user". انقر فوق "إعدادات التحكم في حساب المستخدم". اسحب شريط الاختيار على طول الطريق إلى الأسفل إلى "عدم التنبيه أبدًا".


-3
2017-08-04 14:09



تعطيل UAC ليس ما أحاول تحقيقه. أيضا: وصفك لكيفية عمل UAC صحيح فقط بالمعنى العام. من الممكن أن يطلب برنامج UAC عندما لا يحتاج إليه بصرامة. ويحدث UAC قبل بدء البرنامج - بمجرد تشغيله ، إذا تجاوز خطواته ، فإنه سيحصل ببساطة على أخطاء رفض الأذونات. - Andrew Russell
علم الدلالات جانبا ، لا يمكنك "تعطيل" إشعارات UAC لبرنامج محدد في حين لا تزال تحد من وصولهم. - James Watt
جيمس: في الواقع - يبدو أنك تستطيع - لقد قمت بتحديث سؤالي. - Andrew Russell
بعد أن قمت بتعديل شفرة البرنامج نفسها ، سأكون مهتمًا بمعرفة حل عملي إذا وجدت واحدًا. - James Watt