كيف يمكنني تحرير ملف المضيفين برمجيًا في Windows 7/Server 2008؟
-
02-10-2019 - |
سؤال
أنا أكتب أداة 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