كيف يمكنني تحرير ملف المضيفين برمجيًا في Windows 7/Server 2008؟

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

سؤال

أنا أكتب أداة WPF صغيرة لإدارة الإدخالات في ملف المضيف لأغراض Dev. كما قد تعرف أن ملف المضيفين محمي من قبل OSS الأحدث (Win 7/88/Vista).

لقد أضفت بيانًا إلى طلبي لتعيين requestedExecutionlevel هنا (باستخدام "الطريق السهل") وفي السؤال ذي الصلة هنا.

لسوء الحظ ، لم ينجح هذا بالنسبة لي. لا يوجد أي موجه الارتفاع عندما أقوم ببدء التطبيق ، ولا يزال ملف الاتصال. رفض."

HostSchanger.exe.manifest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="HostsChanger" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

أيه أفكار؟

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

المحلول

تم إعادة صياغتها من تعليقي السابق ، تحولت إلى إجابة:

يحتوي الإجابة التي أعطاها HO1 على تطبيق. الفرق هنا هو أن اسم الملف هو "app.manifest" ، وخيار المشروع "البيان" (في علامة تبويب التطبيق) يشير إليه.

نصائح أخرى

لست متأكدًا مما إذا كان ذلك سيحدث أي فرق ، لكن المقتطف الواضح الخاص بك يختلف قليلاً عن فهمي لكيفية أن يكون (على الرغم من أن هذا قد يكون إصدارات مختلفة):

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <assemblyIdentity version="1.0.0.0" name="HostsChanger" />
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
         <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
         </requestedPrivileges>
      </security>
   </trustInfo>
</asmv1:assembly>

خلاف ذلك ، قد يكون العمل حولك هو وجود تطبيق "محمل" منفصل يبدأه المستخدم ويبدأ فقط أداة WPF الحقيقية باستخدام Verb runas كما هو مفصل في هذه منشور المدونة (لذلك Process.StartInfo.Verb = "runas";).

سوف أتناول طعنة في الظلام هنا وأقول إنها مشكلة توقيع أصلية. لم أسمع أنك تذكر أي شيء عن توقيع طلبك. بقدر ما يذهب فهمي ، على عكس Vista ، في Windows 2008/7 ، الطريقة الوحيدة لتشغيل تطبيق مرتفعة هي الحصول على بيان تطبيق موقّع يحدد مستوى الامتياز الذي يحتاجه التطبيق. إذا كنت بحاجة إلى مساعدة في التوقيع ، فإليك مقالة حول كيفية التوقيع على طلبك: http://msdn.microsoft.com/en-us/library/bb756995.aspx

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