c# - প্রশাসক হিসাবে চালানোর জন্য আমি কিভাবে আমার.NET অ্যাপ্লিকেশনকে জোর করব?




windows-7 administrator (8)

আপনার এক্সিকিউটেবলটি রাইট ক্লিক করুন, প্রোপার্টি> সামঞ্জস্যপূর্ণ যান এবং 'অ্যাডমিন হিসাবে এই প্রোগ্রামটি চালান' বাক্সটি চেক করুন।

যদি আপনি এটি সমস্ত ব্যবহারকারীদের জন্য প্রশাসক হিসাবে চালাতে চান তবে একই জিনিস একইভাবে 'সকল ব্যবহারকারীর জন্য সেটিং সেটিং' এ করুন।

একবার আমার প্রোগ্রামটি ক্লায়েন্ট মেশিনে ইনস্টল হয়ে গেলে, কীভাবে আমি উইন্ডোজ 7 এ প্রশাসক হিসাবে চালানোর জন্য আমার প্রোগ্রামকে জোর করব?


আপনার ম্যানিফেস্টে একটি requestedExecutionLevel এক্সিকিউশন requestedExecutionLevel উপাদান যুক্ত করা মাত্র অর্ধেক যুদ্ধ; আপনি মনে রাখতে হবে যে UAC বন্ধ করা যাবে। যদি এটি হয় তবে আপনাকে পুরানো স্কুল পদ্ধতি পরীক্ষা করতে হবে এবং ব্যবহারকারী প্রশাসক না হলে ত্রুটি সংলাপ স্থাপন করতে হবে
(আপনার থ্রেডের বর্তমান IsInRole(WindowsBuiltInRole.Administrator) কল করুন।


আপনি EXE ফাইলটিতে একটি ম্যানিফেস্ট ফাইলটি এম্বেড করতে পারেন যা উইন্ডোজ (7 বা তার বেশি) কে প্রশাসক হিসাবে প্রোগ্রাম চালানোর জন্য তৈরি করবে।

আপনি ধাপ 6 এ আরো বিশদ জানতে পারেন : অ্যাপ্লিকেশন ম্যানিফেস্ট (ইউএসি) (এমএসডিএন) তৈরি এবং এম্বেড করুন


আমি নিজে নিজে কিছু কোড প্রয়োগ করেছি:

using System.Security.Principal;
public bool IsUserAdministrator()
{
    bool isAdmin;
    try
    {
        WindowsIdentity user = WindowsIdentity.GetCurrent();
        WindowsPrincipal principal = new WindowsPrincipal(user);
        isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    catch (UnauthorizedAccessException ex)
    {
        isAdmin = false;
    }
    catch (Exception ex)
    {
        isAdmin = false;
    }
    return isAdmin;
}

এটি করার আরেকটি উপায়, শুধুমাত্র কোডে, প্রক্রিয়াটিকে প্রশাসক হিসাবে @NG দ্বারা উত্তর হিসাবে চলছে কিনা তা সনাক্ত করা । । এবং তারপর আবার অ্যাপ্লিকেশন খুলুন এবং বর্তমান এক বন্ধ।

আমি এই কোডটি ব্যবহার করি যখন কোনও অ্যাপ্লিকেশনের জন্য শুধুমাত্র নির্দিষ্ট শর্তগুলির অধীনে চালানোর সময় প্রশাসকের বিশেষাধিকারগুলির প্রয়োজন হয়, যেমন একটি পরিষেবা হিসাবে নিজেকে ইনস্টল করা। তাই এটি প্রশাসক হিসাবে সব সময় অন্যান্য উত্তর মত চালানোর প্রয়োজন নেই।

নিচের NeedsToRunAsAdmin উল্লেখ্য NeedsToRunAsAdmin এমন একটি পদ্ধতি যা বর্তমান অবস্থার অধীনে অ্যাডমিন সুবিধাগুলির প্রয়োজন হয় কিনা তা সনাক্ত করে। এই false ফেরত যদি কোড নিজেই elevate হবে না। এই অন্যদের উপর এই পদ্ধতির একটি প্রধান সুবিধা।

যদিও এই কোডটি উপরে উল্লিখিত সুবিধাগুলি রয়েছে, তবে এটি একটি নতুন প্রক্রিয়া হিসাবে নিজেকে পুনরায় চালু করার প্রয়োজন যা সবসময় আপনি যা চান তা নয়।

private static void Main(string[] args)
{
    if (NeedsToRunAsAdmin() && !IsRunAsAdmin())
    {
        ProcessStartInfo proc = new ProcessStartInfo();
        proc.UseShellExecute = true;
        proc.WorkingDirectory = Environment.CurrentDirectory;
        proc.FileName = Assembly.GetEntryAssembly().CodeBase;

        foreach (string arg in args)
        {
            proc.Arguments += String.Format("\"{0}\" ", arg);
        }

        proc.Verb = "runas";

        try
        {
            Process.Start(proc);
        }
        catch
        {
            Console.WriteLine("This application requires elevated credentials in order to operate correctly!");
        }
    }
    else
    {
        //Normal program logic...
    }
}

private static bool IsRunAsAdmin()
{
    WindowsIdentity id = WindowsIdentity.GetCurrent();
    WindowsPrincipal principal = new WindowsPrincipal(id);

    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

বিস্তারিত পদক্ষেপ অনুসরণ করা হয়।

  1. সমাধান অ্যাপ্লিকেশন ম্যানিফেস্ট ফাইল যোগ করুন
  2. "App.manifest" এ অ্যাপ্লিকেশন সেটিং পরিবর্তন করুন
  3. অ্যাডমিনিস্ট্রেটর প্রয়োজন জন্য "requestExecutionLevel" ট্যাগ আপডেট করুন।

উল্লেখ্য যে এই কোডটি ব্যবহার করে আপনাকে ClickOnce এর সুরক্ষা সেটিংস বন্ধ করতে হবে, এটি করার জন্য, প্রপার্টিগুলির ভিতরে যান -> সুরক্ষা -> ক্লিকঅন সিকিউরিটি


ভিজ্যুয়াল স্টুডিও 2010 এ ডানদিকে আপনার প্রোজেক্ট নামটি ক্লিক করুন। "উইন্ডোজ সেটিংস দেখুন" হিট করুন, এটি "app.manifest" নামক একটি ফাইল তৈরি করে এবং খোলে। এই ফাইলের মধ্যে "asInvoker" প্রতিস্থাপিত করুন "প্রয়োজনীয় প্রশাসক" হিসাবে ফাইলের মধ্যে মন্তব্য বিভাগে ব্যাখ্যা করা হয়েছে।


যেমনটি

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

আপনি যদি ইতিমধ্যে একটি না থাকে বা একটি যুক্ত করতে না জানেন তবে একটি অ্যাপ্লিকেশন ম্যানিফেস্ট যোগ করতে চান। যেহেতু কিছু প্রকল্প স্বয়ংক্রিয়ভাবে একটি পৃথক ম্যানিফেস্ট ফাইল যোগ করে না, প্রথমে প্রোজেক্ট প্রোপার্টিজগুলিতে যান, অ্যাপ্লিকেশন ট্যাবে নেভিগেট করুন এবং আপনার প্রকল্পের ট্যাপের নীচে ম্যানিফেস্টটি বাদ না করে তা নিশ্চিত করতে চেক করুন।

  • পরবর্তী, ডান ক্লিক করুন প্রকল্প
  • নতুন আইটেম যোগ করুন
  • সর্বশেষ, অ্যাপ্লিকেশন ম্যানিফেস্ট ফাইলটি খুঁজুন এবং ক্লিক করুন




elevated-privileges