فرهاد خانلری
کارشناس ارشد شبکه مایکروسافت

آموزش محدود کردن نصب نرم افزار سی شارپی فقط در یک سیستم

چگونه اجازه نصب برنامه فقط روی یک سیستم را بدهیم؟ با سلام در این مطلب میخوام بهتون بگم چطور میشه برنامه ای بنویسیم که این برنامه فقط روی یک سیستم اجرا بشه ، شاید خیلی موقع ها ببینید برنامه هایی هستند که از نظر امنیتی اینجوری طراحی شدند که در یک یا چند سیستم میتونن نصب بشن البته من تمام کد هاشو اینجا نمیارم ولی با همین کد ها شما میتونید کلی کار انجام بدید.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
وب سایت توسینسو

یکی از بهترین راه کارها برای این منظور استفاده از سخت افزار هست اگر شما از نرم افزار استفاده کنید خب طبیعتاً راه های دور زدن زیاد هست هر چند برای سخت افزار هم این قضیه صدق میکنه اما کار هرکس نیست .... پس بهتره از سخت افزار استفاده شه تمام سخت افزار ها دارای شماره سریالی هستند که یه سری از اونها منحصر به فرد هستند مثل کارت شبکه که از یه عددی تشکیل شده که این عدد در دنیا unic هست .

یعنی در کل دنیا ازش یکی وجود داره(شماره سریال)در این مطلب میخوام توسط برنامه نویسی به کمک سریال های سخت افزاری کاری کنیم نرم افزارمون روی یک سیستم نصب شه پس برای ادامه این داستان نیاز داریم شماره سریال سخت افزار رو بدست بیاریم و پس از اون میتونیم کافیه با یه if چک کنی که برنامه روی همون سخت افزار اجرا میشه. البته شما میتونید کد ها رو با هم تلفیق کنید و تو برنامتون ازشون استفاده کنید. توسط کدهای زیر شماره سریال cpu سیستم رو بدست میاریم

  • نکته مهم : برای استفاده از این کد ها باید کتابخانه System.Management رو تو برنامه اضافه کنیم.

برای به دست اوردن سریال سی پی یو از این کد ها استفاده میکنیم

using System.Management;
string cpuInformation = string.Empty;
ManagementClass Nocpu = new ManagementClass("win32_processor");
ManagementObjectCollection moc = Nocpu.GetInstances();
 
foreach (ManagementObject mo in moc)
{
    cpuInformation = mo.Properties["processorID"].Value.ToString();
    break;
}
lblCpuNo.Text = cpuInformation ;

البته لازم هست اضافه کنم lblCpuNo.Text یک لیبل هست که باید روی فورمتون ایجاد کنید.میریم سراغ به دست اوردن شماره سریال کارت شبکه

using System.Management;
string noMacAddresses =string.Empty;
 
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
    if (nic.OperationalStatus == OperationalStatus.Up)
    {
        noMacAddresses+= nic.GetPhysicalAddress().ToString();
        break;
    }
}

lblMacNo.Text = noMacAddresses;

lblMacNo هم مانند کد بالا یک لیبل هست که روی فرم ما ایجاد میشه.


فرهاد خانلری
فرهاد خانلری

کارشناس ارشد شبکه مایکروسافت

فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ...

نظرات