ويندوز - كيفية فرض برنامج C#Winforms تشغيل كمسؤول على أي جهاز كمبيوتر؟




كيفية تشغيل الكمبيوتر كمسؤول (3)

كيفية فرض برنامج C # Winforms تشغيل كمسؤول على أي جهاز كمبيوتر؟ وأي نوع من نظام التشغيل؟

أحتاج حل الكود (أي رمز عينة سيكون ممتازا)

شكرا مقدما



الإجابة الواضحة هي إضافة ملف بيان إلى مشروع C # وإضافة السطر التالي:

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

ولكن ، يمكن أيضًا اتباع نهج غير تقليدي. نحن نعلم أن الوصول إلى التسجيل يتطلب امتيازات المسؤول. لذلك ، إذا كان لديك دالة تحتوي على وصول إلى سجل الكتابة ، فستقوم الدالة بإلقاء System.Security.SecurityException إذا لم تقم بتشغيل البرنامج كمسؤول. من المفترض أن عليك استدعاء هذه الوظيفة في بداية البرنامج. إذا تم طرح هذا الاستثناء ، يمكنك إعلام المستخدم بتشغيل البرنامج كمسؤول وإغلاق البرنامج.

public void enforceAdminPrivilegesWorkaround()
{
    RegistryKey rk;
    string registryPath = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\";

    try
    {
        if(Environment.Is64BitOperatingSystem)
        {
            rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
        }
        else
        {
            rk = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
        }

        rk = rk.OpenSubKey(registryPath, true);
    }
    catch(System.Security.SecurityException ex)
    {
        MessageBox.Show("Please run as administrator");
        System.Environment.Exit(1);
    }
    catch(Exception e)
    {
        MessageBox.Show(e.Message);
    }
}

هنا ، true في السطر rk = rk.OpenSubKey(registryPath, true) يخبر البرنامج أنه يحتاج إلى الوصول إلى الكتابة إلى التسجيل.


يمكنك تضمين هذا البيان في التطبيق الخاص بك.

<?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="MyApplication" />
    <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>  




manifest