PDA

View Full Version : مبتدی: یک مثال عملی برای کد تلفنی برای حفاظت از نرم فزار (کد فعال سازی)



esafb52
چهارشنبه 16 اسفند 1391, 01:10 صبح
با سلام به همه اساتید و دوستان عزیز
تو این چند روز هر وقت تایپیک رو چک میکردم یه پست در مورد نحوه ایجاد یک کد سخت افزار (مانند سریال cpuو...) میدیم که کمی هم برای یه فرد مبتدی مثل خودم که یه دفترچه تلفن درست میکنند و دوست دارن ازش حفاظت کنند طراحی و استفاده از اون یه کم شاید سخت باشه!!!به همین دلیل سعی کردم یه برنامه درست کنم که هم یه تجربه کسب کنم و هم شاید به درد کسی هم مثل خودم بخوره
تو ضمیمه یه برنامه هست که براساس کد درایو c کار میکنه و یه برنامه دیگه که این کد رو بهش میدی و کد فعال سازی رو بهت بر میگردونه و برنامه در هر بار اجرا چک میکنه کد وارد شده درست هست یا نه!!
چند نکته :
1- این اولین برنامه من در این رابطه هست پس کرکش سخت نیست ولی هر بی سوادی هم نمیتونه از برنامه تون استفاده کنه
2- الگوریتم پیچده کردن کدش رو راحت میتونین به سلیقه تون تغییر بدین تا از امنیت بالاتری برنامه تون برخوردار بشه
3-تو سیستم خودم راحت جواب داد و مشکلی نبود تست کنید و نکات ضعفش رو بگین
4- تاکید میکنم این برنامه برای قفل گذاری در مقابل کاربرای معمولی جواب میده و امنیت کمی داره
5-از ریجستری استفاده شد

سوالی بود که بلد بودم همین جا مطرح کنید جواب میدم
موفق باشین
صلوات

esafb52
چهارشنبه 16 اسفند 1391, 12:29 عصر
با سلام
از دوستان اگه کسی فرصت داره به این برنامه یه نگاهی بندازه و ببینه برای بقیه سیستم ها هم درست جواب میده یا نه!؟
ممنون

morteza271
چهارشنبه 16 اسفند 1391, 12:44 عصر
سلام دوست عزیز.
من برنامتون رو دانلود و اجرا کردم.
وقتی برنامه reg sampel رو اجرا میکنم توی فرمش میاره کد سیستم مشتری : 525412822886
بعد رفتم و برنامه دیگه رو اجرا کردم و کد بالا رو در قسمت کد مشتری وارد کردم و بعد از کلیک بر روی کلید دریافت کد فعالسازی این کد رو بهم داد : 2.95668279881391E+19

بعد وقتی این کد رو در برنامه reg sample وارد کردم و کلید فعالسازی رو کلیک کردم این پیام رو نشون داد :
لطفا کد فعال سازی را به صورت صحیح وارد نمائید!

مشکل چیه؟؟

esafb52
چهارشنبه 16 اسفند 1391, 13:26 عصر
سلام اصلاح شد
تست کنید
موفق باشید

morteza271
چهارشنبه 16 اسفند 1391, 13:32 عصر
نه متاسفانه درست نشده هنوز!!!

اینبار این کد رو داد : 28B82283
و اینم کد فعالسازی : 1.59717091552178E+15
ولی بازم همون پیام رو نمایش داد!!!

esafb52
چهارشنبه 16 اسفند 1391, 13:35 عصر
شما از برنامه های جدید استفاده کردین؟؟؟؟
الان من تست کردم کد فعال سازی شما : 525412822866

esafb52
چهارشنبه 16 اسفند 1391, 13:39 عصر
کدها رو چک کن
کدهای فرم فعال سازی

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
using Microsoft.Win32;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{

double sn;
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"software\snreg");
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
sn = Code(GetHDDSerialNumber(""));
textBox1.Text = GetHDDSerialNumber("");
//بررسی وجود فایل ریجستری و صحت کد فعال سازی در آن
if (reg!=null)
{
string a = reg.GetValue("snb").ToString();
string b = sn.ToString();
if (a==b)
{
Form2 f2 = new Form2();
this.Hide();
f2.ShowDialog();
this.Close();
}
}

else
{
textBox1.Text = GetHDDSerialNumber("");
textBox1.ReadOnly = true;

}
}
//تبدیل به عدد کردن کد و انجام محاسبات برای تولید کد فعال سازی
private double Code(string sn)
{
double snb;
string x = sn;
for (int i = 0; i < x.Length; i++)
if (x[i] < 48 || x[i] > 57)
{
int ee = x[i] / 20 + 48;
x = x.Remove(i, 1);
x = x.Insert(i, Char.ConvertFromUtf32(ee));
}
snb = double.Parse(x);
double ff = snb * 356 * 52 - 10-20;
double fff = Math.Round(ff);
return fff;


}
//وارد کردن کد فعال سازی و فعال کردن برنامه
private void button1_Click(object sender, EventArgs e)
{
double a = 0;
double.TryParse(textBox2.Text, out a);
if (textBox2.Text == "")
{
MessageBox.Show("لطفا کد فعال سازی را وراد نمایید");
return;
}
else if (a == sn)
{
RegistryKey reg = Registry.LocalMachine.CreateSubKey(@"software\snreg");
reg.SetValue("snb", a);
MessageBox.Show("نرم افزار با موفقیت فعال شد ");
Form2 f2 = new Form2();
this.Hide();
f2.ShowDialog();
this.Close();
}
else
{
textBox2.Text = "";
MessageBox.Show("لطفا کد فعال سازی را به صورت صحصیح وراد نمایید");
}
}
//دریافت شماره سریال درایو c
public string GetHDDSerialNumber(string drive)
{
if (drive == "" || drive == null)
{
drive = "C";
}
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + ":\"");
disk.Get();
return disk["VolumeSerialNumber"].ToString();
}


private void button2_Click(object sender, EventArgs e)
{
this.Close();
}

private void label2_Click(object sender, EventArgs e)
{

}

private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show(GetHDDSerialNumber(""));
}
}
}


و کد برنامه ای که کد فعال سازی رو میده:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Code(textBox1.Text);
textBox2.Text = Code(textBox1.Text).ToString();
}
private double Code(string sn)
{
double snb;
string x = sn;
for (int i = 0; i < x.Length; i++)
if (x[i] < 48 || x[i] > 57)
{
int ee = x[i] / 20 + 48;
x = x.Remove(i, 1);
x = x.Insert(i, Char.ConvertFromUtf32(ee));
}
snb = double.Parse(x);
double ff = snb * 356 * 52 - 10-20;
double fff = Math.Round(ff);
return fff;


}
}
}

morteza271
چهارشنبه 16 اسفند 1391, 13:43 عصر
شما از برنامه های جدید استفاده کردین؟؟؟؟
الان من تست کردم کد فعال سازی شما : 525412822866

نه این کد سیستم رو میده به من : 28B82283

این کدی که شما دادین رو هم تست کردم ولی جواب نداد!!!

esafb52
چهارشنبه 16 اسفند 1391, 13:54 عصر
دوست عزیز دیگه شک کردم من هر بار الگوریتم تولیدکد رو تغییر میدم و راحت فعال سازی انجام میدم شاید کد های اینجا مشکل داشته باشه دو هر دو پروژه چک کن ببین این کد همین باشه یا اصلا کپی و جایگزین کن!باید صد درصد درست بشه
متد مورد نظر :


private double Code(string sn)
{
double snb;
string x = sn;
for (int i = 0; i < x.Length; i++)
if (x[i] < 48 || x[i] > 57)
{
int ee = x[i] / 20 + 48;
x = x.Remove(i, 1);
x = x.Insert(i, Char.ConvertFromUtf32(ee));
}
snb = double.Parse(x);
double ff = snb * 356 * 52 - 10;
double fff = Math.Round(ff);
return fff;


}

morteza271
چهارشنبه 16 اسفند 1391, 13:58 عصر
مهندس جان من آخرین پروژه ای که گذاشتین رو دانلود کردم و اجرا کردم ولی مشکل همون بود!!

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

طبق کد فعال سازی که به من میده تقریبا مطمئنم که شما در تبدیل نوع داده ها اشتباه کردین. مثلا احتمالا عدد بزرگتر از int هست و باید long در نظر بگیرین!!!
هر چند به نظرم بعید میدونم برای اینکار نیازی باشه به تبدیل کردن به int و همه ی الگوریتم ها رو میشه با همون نوع string انجام داد.
موفق باشید

esafb52
چهارشنبه 16 اسفند 1391, 14:11 عصر
نه دوست عزیز من از int اصلا استفاده نکردم ولی احتمالا برای تست چون مجبورم الگوریتم تولید کد رو هر بار تغییر بدم تا با پنجره کد فعال سازی مواجه بشم این تغییرات رو در هر دو پروژه آپلودی به صورت یکسان اعمال نکردم./
لطفا دوستان چک کنند ببین مشکلی داره اگه داره کجای برنامه و راهنمایی کنن
موفق باشید
ممنون
لینک برنامه (http://barnamenevis.org/attachment.php?attachmentid=100989&d=1362568030)اصلاح شده

esafb52
چهارشنبه 16 اسفند 1391, 21:14 عصر
از دوستا کسی میتونه یه تست با برنامه (http://barnamenevis.org/attachment.php?attachmentid=100989&d=1362568030) بزنه و نتیجه رو بگه

docendo
چهارشنبه 16 اسفند 1391, 21:54 عصر
من تست کردم خود برنامه ایرادی ندارد مشکلی که هست شما وقتی در رایانه خودتان این برنامه را اجرا و تست کرده اید تمام obj همرا برنامه است که این مشکل بوجو می آره برای نمونه این کد از ریجستری رایانه شماست که همراه با برنامه تان میباشد بهتره obj ها را پاک کنید

C:\Users\esa shahqole zadeh\Desktop\activtion prog example\activtion\get active code\get active code\get active code\obj\Release\get active code.pdb

daneshjo90
پنج شنبه 17 اسفند 1391, 11:02 صبح
با سلام
من فقط فایل های exe رو تست کردم
هر دوتاشون درست کار کردن

دستت مرسی

ولی منظورت از کد درایو C چی هستش ؟
دقیق توضیح بده ببینیم

موفق باشی

morteza271
پنج شنبه 17 اسفند 1391, 14:28 عصر
دوست عزیز دیگه شک کردم من هر بار الگوریتم تولیدکد رو تغییر میدم و راحت فعال سازی انجام میدم شاید کد های اینجا مشکل داشته باشه دو هر دو پروژه چک کن ببین این کد همین باشه یا اصلا کپی و جایگزین کن!باید صد درصد درست بشه

[/CSHARP]
آقا من این پروژه رو که دانلود کردم و تست کردم مشکل حل شد.
ممنون.

esafb52
پنج شنبه 17 اسفند 1391, 20:07 عصر
با سلام
من فقط فایل های exe رو تست کردم
هر دوتاشون درست کار کردن

دستت مرسی

ولی منظورت از کد درایو C چی هستش ؟
دقیق توضیح بده ببینیم

موفق باشی
با سلام دوست عزیز خیلی ساده هر درایو یه سریال داره که میشه اون رو در آورد و این سریال تا زمانی که اون درایو فرمت نشه معتبره
کدش هم تو پروژه هست
بعدش اون رو میریزی تو یه متغییر و باها ش محاسبات انجام میدی تا کد فعال سازی رو تولید کنه بعدش هم ساده اس تو برنامه ات چک میکنه که آیا برنامه ریجستر شده یا نه !
موفق باشی

daneshjo90
جمعه 18 اسفند 1391, 00:03 صبح
با سلام دوست عزیز خیلی ساده هر درایو یه سریال داره که میشه اون رو در آورد و این سریال تا زمانی که اون درایو فرمت نشه معتبره
کدش هم تو پروژه هست
بعدش اون رو میریزی تو یه متغییر و باها ش محاسبات انجام میدی تا کد فعال سازی رو تولید کنه بعدش هم ساده اس تو برنامه ات چک میکنه که آیا برنامه ریجستر شده یا نه !
موفق باشی

ممنون از توضیحت ولی من خودم یه قفل نرم افزاری نوشتم و میدونم چطور میشه با اینا کار کرد فقط منظورم این بود که در مورد سریال درایو ها توضیح بدی

که دادی ولی نگفتی که این کدها یکتا هستن؟
یا تو سیستم هایی که از هر نظر یکسان هستن اعداد هم تکراری باشن

اینو تست کردی ؟

موفق باشی

esafb52
جمعه 18 اسفند 1391, 00:27 صبح
بله این کدها یکتا هستن و حتی اگه خود کاربر هم درایوش رو فرمت کنه باز کد جدیدی براش تولید میشه نه من هنوز اینو تست نکردم ( از هر نظر یکسان هستن اعداد هم تکراری باشن)
ولی هر هارد سریال خاصی رو داره هرچند از یک شرکت باشن سیستم من تو هارد داره ولی برای هر درایو کد متفاوت میده
میشه قفل نرم افزاری که نوشتی رو یه توضیح بدی که از چه روشی استفاده کردی و یا در صورت امکان نمونه کد بزاری؟

daneshjo90
جمعه 18 اسفند 1391, 01:07 صبح
من تو قفلی که نوشتم از سریال های CPU,HDDو mainboard رو میگیرم و تبدیل به یه کد 8 کاراکتری متشکل از حروف و اعداد میکنم در آخر هم بعد از اینکه کد رو از مشتری گرفتم با یه الگوریتمی یه کد 8 رقمی تولید میکنم

توجه داشته باش که فقط عدد تحویل کاربر میشه

ولی این برنامه یه مشکل داشت که دارم روش تحقیق میکنم

این برنامه رو سیستم هایی که از نظر سیستم سخت افزاری یکسان بودن کاملا یکسان کد تولید میکنه و این یه مشکل بود برام
برا همین من یه ایده دارم که اگه وقت داشتم پیاده سازی میکنم
ایده من به این صورت هستش که بعد از اینکه کد 8 کاراکتری رو گرفت همون اول تبدیل به یه کد 8 رقمی دیگه ای بکنه که در اون ابتدا با یه کد دیگه که به صورت رندوم ایجاد میشه جمع یا تفریق بشه بعد نشون کاربر داده بشه و این کد به عنوان کد سیستم باشه

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

ولی نمیدونم اون کد تولیدی رو کجا ذخیره کنم که با مانیتورینگ نشه پیداش کرد

امیدوارم فهمیده باشی چی میگم

موفق باشی

aboulfazl950
شنبه 26 اسفند 1391, 18:35 عصر
سلام!
من برنامه شما رو روی چندتا کامپیوتر امتحان کردم یکی از آنها اروری با مضمون No Access to Registry داد. مشکل از کجاست؟

esafb52
شنبه 26 اسفند 1391, 22:39 عصر
سلام دوست عزیز فکر کنم باید یه true تو قسمت باز کردن کلید ریجستری اضافه ای کنی !البته شاید دیپ فریز یا یا اکانتت ادمین نبوده و شاید هم ویروسی بوده!

aboulfazl950
یک شنبه 27 اسفند 1391, 05:08 صبح
سلام دوست عزیز فکر کنم باید یه true تو قسمت باز کردن کلید ریجستری اضافه ای کنی !البته شاید دیپ فریز یا یا اکانتت ادمین نبوده و شاید هم ویروسی بوده!

میشه راه حل اینها رو هم بگی .ممنون(فقط یک نکته این که اکانت ادمین بود)

jafarpalideh
یک شنبه 27 اسفند 1391, 06:32 صبح
با سلام
آقا روی سیستم من هم همین مشکل وجود داره که عدد رو نجومی میزنه ؟؟؟؟؟؟؟؟ 1.95766329285611E+15
مشکل حل نشده
کدی که سیتم به من میده اینه
B4788E58

esafb52
یک شنبه 27 اسفند 1391, 09:57 صبح
با سلام
آقا روی سیستم من هم همین مشکل وجود داره که عدد رو نجومی میزنه ؟؟؟؟؟؟؟؟ 1.95766329285611E+15
مشکل حل نشده
کدی که سیتم به من میده اینه
B4788E58
با سلام باید از این لینک (http://barnamenevis.org/attachment.php?attachmentid=100989&d=1362568030)برنامه اصلح شده رو دانلود میکردی و پوشه obj رو حذف و بعد اجرا میکردی
کد فعال سازی شما هم :6440020851462
تست کنید
موفق باشید

esafb52
یک شنبه 27 اسفند 1391, 10:03 صبح
میشه راه حل اینها رو هم بگی .ممنون(فقط یک نکته این که اکانت ادمین بود)
سلام فکر کنم با این مشکلت حل بشه :
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"software\snreg",true);

aboulfazl950
یک شنبه 27 اسفند 1391, 17:09 عصر
سلام فکر کنم با این مشکلت حل بشه :
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"software\snreg",true);

ممنون.مشکل اینه که admin سطح دسترسی ندارد.میشه بگید چطور از طریق کد میتوان premision ادمین را تغییر داد؟

esafb52
یک شنبه 27 اسفند 1391, 18:56 عصر
ممنون.مشکل اینه که admin سطح دسترسی ندارد.میشه بگید چطور از طریق کد میتوان premision ادمین را تغییر داد؟
سلام فکر کنم با این جواب بده
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"software\snreg",RegistryKeyPermissionCheck.ReadWriteSubTree);
موفق باشین

esafb52
یک شنبه 27 اسفند 1391, 19:02 عصر
فکر کنم اینم مفید باشه از msdn نگاه کردم


using System;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Security;
using Microsoft.Win32;

public class Example
{
public static void Main()
{
const string TestKey = "TestKey3927";
RegistryKey cu = Registry.CurrentUser;

string user = Environment.UserDomainName +
"\\" + Environment.UserName;

// Create a security object that grants no access.
RegistrySecurity mSec = new RegistrySecurity();

// Add a rule that grants the current user the right
// to read and enumerate the name/value pairs in a key,
// to read its access and audit rules, to enumerate
// its subkeys, to create subkeys, and to delete the key.
// The rule is inherited by all contained subkeys.
//
RegistryAccessRule rule = new RegistryAccessRule(user,
RegistryRights.ReadKey | RegistryRights.WriteKey
| RegistryRights.Delete,
InheritanceFlags.ContainerInherit,
PropagationFlags.None,
AccessControlType.Allow
);
mSec.AddAccessRule(rule);

// Add a rule that allows the current user the right
// right to set the name/value pairs in a key.
// This rule is inherited by contained subkeys, but
// propagation flags limit it to immediate child
// subkeys.
rule = new RegistryAccessRule(user,
RegistryRights.ChangePermissions,
InheritanceFlags.ContainerInherit,
PropagationFlags.InheritOnly |
PropagationFlags.NoPropagateInherit,
AccessControlType.Allow);
mSec.AddAccessRule(rule);

// Display the rules in the security object.
ShowSecurity(mSec);

// Create the test key using the security object.
//
RegistryKey rk = cu.CreateSubKey(TestKey,
RegistryKeyPermissionCheck.ReadWriteSubTree, mSec);

// Create a child subkey and a grandchild subkey,
// without security.
RegistryKey rkChild = rk.CreateSubKey("ChildKey",
RegistryKeyPermissionCheck.ReadWriteSubTree);
RegistryKey rkGrandChild =
rkChild.CreateSubKey("GrandChildKey",
RegistryKeyPermissionCheck.ReadWriteSubTree);

Show(rk);
Show(rkChild);
Show(rkGrandChild);

rkGrandChild.Close();
rkChild.Close();
rk.Close();

cu.DeleteSubKeyTree(TestKey);
}

private static void Show(RegistryKey rk)
{
Console.WriteLine(rk.Name);
ShowSecurity(rk.GetAccessControl());
}

private static void ShowSecurity(RegistrySecurity security)
{
Console.WriteLine("\r\nCurrent access rules:\r\n");

foreach (RegistryAccessRule ar in security.GetAccessRules(true, true, typeof(NTAccount)))
{

Console.WriteLine(" User: {0}", ar.IdentityReference);
Console.WriteLine(" Type: {0}", ar.AccessControlType);
Console.WriteLine(" Rights: {0}", ar.RegistryRights);
Console.WriteLine(" Inheritance: {0}", ar.InheritanceFlags);
Console.WriteLine(" Propagation: {0}", ar.PropagationFlags);
Console.WriteLine(" Inherited? {0}", ar.IsInherited);
Console.WriteLine();
}

}
}

aboulfazl950
یک شنبه 27 اسفند 1391, 19:52 عصر
فکر کنم اینم مفید باشه از msdn نگاه کردم


using System;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Security;
using Microsoft.Win32;

public class Example
{
public static void Main()
{
const string TestKey = "TestKey3927";
RegistryKey cu = Registry.CurrentUser;

string user = Environment.UserDomainName +
"\\" + Environment.UserName;

// Create a security object that grants no access.
RegistrySecurity mSec = new RegistrySecurity();

// Add a rule that grants the current user the right
// to read and enumerate the name/value pairs in a key,
// to read its access and audit rules, to enumerate
// its subkeys, to create subkeys, and to delete the key.
// The rule is inherited by all contained subkeys.
//
RegistryAccessRule rule = new RegistryAccessRule(user,
RegistryRights.ReadKey | RegistryRights.WriteKey
| RegistryRights.Delete,
InheritanceFlags.ContainerInherit,
PropagationFlags.None,
AccessControlType.Allow
);
mSec.AddAccessRule(rule);

// Add a rule that allows the current user the right
// right to set the name/value pairs in a key.
// This rule is inherited by contained subkeys, but
// propagation flags limit it to immediate child
// subkeys.
rule = new RegistryAccessRule(user,
RegistryRights.ChangePermissions,
InheritanceFlags.ContainerInherit,
PropagationFlags.InheritOnly |
PropagationFlags.NoPropagateInherit,
AccessControlType.Allow);
mSec.AddAccessRule(rule);

// Display the rules in the security object.
ShowSecurity(mSec);

// Create the test key using the security object.
//
RegistryKey rk = cu.CreateSubKey(TestKey,
RegistryKeyPermissionCheck.ReadWriteSubTree, mSec);

// Create a child subkey and a grandchild subkey,
// without security.
RegistryKey rkChild = rk.CreateSubKey("ChildKey",
RegistryKeyPermissionCheck.ReadWriteSubTree);
RegistryKey rkGrandChild =
rkChild.CreateSubKey("GrandChildKey",
RegistryKeyPermissionCheck.ReadWriteSubTree);

Show(rk);
Show(rkChild);
Show(rkGrandChild);

rkGrandChild.Close();
rkChild.Close();
rk.Close();

cu.DeleteSubKeyTree(TestKey);
}

private static void Show(RegistryKey rk)
{
Console.WriteLine(rk.Name);
ShowSecurity(rk.GetAccessControl());
}

private static void ShowSecurity(RegistrySecurity security)
{
Console.WriteLine("\r\nCurrent access rules:\r\n");

foreach (RegistryAccessRule ar in security.GetAccessRules(true, true, typeof(NTAccount)))
{

Console.WriteLine(" User: {0}", ar.IdentityReference);
Console.WriteLine(" Type: {0}", ar.AccessControlType);
Console.WriteLine(" Rights: {0}", ar.RegistryRights);
Console.WriteLine(" Inheritance: {0}", ar.InheritanceFlags);
Console.WriteLine(" Propagation: {0}", ar.PropagationFlags);
Console.WriteLine(" Inherited? {0}", ar.IsInherited);
Console.WriteLine();
}

}
}



دوست عزیز! همه ی اینها را که گفتید انجام دادم ولی نشد.
میخواهم یه جوری به رجیستری متصل بشه و در مسیر
Edit->Permissions
تیک گزینه Allow را برای Full Control را بزند.

zayens
یک شنبه 01 اردیبهشت 1392, 12:22 عصر
از esafb52 جان بابت زحماتش تشکر میکنیم
فقط ای کاش از * آواتار * بقیه برای پروفایل شخصیش استفاده نمیکرد!

hessam2003
شنبه 14 دی 1392, 19:57 عصر
سلام.
من برنامه را دانلود کردم این خطا را میده!!
http://upload7.ir/imgs/2014-01/89066872960721223701.jpg

esafb52
شنبه 14 دی 1392, 23:15 عصر
این خطا مربوط به خودتون هست که کابرتون با سطح دسترسی ادمین نیست

lvlatrood
یک شنبه 15 دی 1392, 12:03 عصر
منم مشکل hessam2003 رو دارم

کاربر هم ادمینه

lvlatrood
یک شنبه 15 دی 1392, 12:54 عصر
از دوستان پرسیدم مشکل حل شد

کافیه بجای اون خط که ارور میده + خط بعدیش اینو قرار بدید

RegistryKey key = Registry.CurrentUser.CreateSubKey("SOFTWARE\\snreg");
key.SetValue("snb", a);
key.Close();

behi1ty
دوشنبه 16 دی 1392, 12:01 عصر
سلام دوستان
من يه مشكلي با كد نرم افزاري دارم

ما قفل مي ذاريم كه برنامه ما رو هر سيستمي كار نكنه درسته؟

فكر كنيد شما شماره سريال سخت افزاري و پيدا مي كنيد و با يه الگوريتمي خيلي قوي هم تبديل مي كني به يه كد فعالسازي
خوب اگر كاربر CD برنامه شما را روي سيستم ديگه قرار بده و برنامه و نصب كنه باز برنامه فعال مي شه!!!
مي شه يه جواب درست به من بديد؟
ممنون

esafb52
دوشنبه 16 دی 1392, 15:16 عصر
سلام دوستان
من يه مشكلي با كد نرم افزاري دارم

ما قفل مي ذاريم كه برنامه ما رو هر سيستمي كار نكنه درسته؟

فكر كنيد شما شماره سريال سخت افزاري و پيدا مي كنيد و با يه الگوريتمي خيلي قوي هم تبديل مي كني به يه كد فعالسازي
خوب اگر كاربر CD برنامه شما را روي سيستم ديگه قرار بده و برنامه و نصب كنه باز برنامه فعال مي شه!!!
مي شه يه جواب درست به من بديد؟
ممنون
دوست عزیز اون کد سخت افزاری در هر سیستم متفاوت هست پس کد فعال سازی هم متفاوت میشه و در سیستم دوم جواب نمیده!!

lvlatrood
دوشنبه 16 دی 1392, 18:14 عصر
یه موضوعی پیش میاد فقط

من برنامه رو پک میکنم
بعد راحت یکی میتونه با آن پکر برنامه رو ببینه دیگه درسته ؟
میتونه الگوریتم رو ببینه
من خودم پک کردم بعد آن پک کردم دیدم راحت میشه ته و توش رو در اورد
قوی ترین پکر چیه الان ؟

behi1ty
سه شنبه 17 دی 1392, 13:40 عصر
دوست عزيز اينقدر سواد دارم كه بدونم كد سخت افزاري هر سيستم فرق مي كنه

من از شما يه برنامه اي و مي خرم ، فرض بر اينه كه برنامه تك كاربره و خريدم و شما هم قفل نرم افزاري داري ... تا اينجا كه درسته

خوب اون وقت منه خريدار ميام برنامه و در سيستم خودم نصب مي كنم و برنامه هم مشخصات سخت افزاري بر مي داره و برنامه و فعال مي كنه

خوب حالا منه خريدار باز مي تونم كه رو يه سيستم ديگه نصب كنه؟؟درسته؟؟؟

-------------------------------------------------

براي حل اين مشكل بايد يه تلفني،يه سامانه اي يا ازطريق پيامك كد سخت افزاري و كد مشتري و بگيريم و كد فعال شدن را بديم به كاربر...درسته؟

خوب تو برنامه چه جوري تعريف كني كه كدي كه ما تعريف كرديم و به كاربر نشان داديم بفهمه

behi1ty
یک شنبه 22 دی 1392, 12:08 عصر
دوست عزيز اينقدر سواد دارم كه بدونم كد سخت افزاري هر سيستم فرق مي كنه

من از شما يه برنامه اي و مي خرم ، فرض بر اينه كه برنامه تك كاربره و خريدم و شما هم قفل نرم افزاري داري ... تا اينجا كه درسته

خوب اون وقت منه خريدار ميام برنامه و در سيستم خودم نصب مي كنم و برنامه هم مشخصات سخت افزاري بر مي داره و برنامه و فعال مي كنه

خوب حالا منه خريدار باز مي تونم كه رو يه سيستم ديگه نصب كنه؟؟درسته؟؟؟

-------------------------------------------------

براي حل اين مشكل بايد يه تلفني،يه سامانه اي يا ازطريق پيامك كد سخت افزاري و كد مشتري و بگيريم و كد فعال شدن را بديم به كاربر...درسته؟

خوب تو برنامه چه جوري تعريف كني كه كدي كه ما تعريف كرديم و به كاربر نشان داديم بفهمه



يعني هيچ كس نمي تونه جواب بده؟؟

danialafshari
یک شنبه 22 دی 1392, 12:18 عصر
يعني هيچ كس نمي تونه جواب بده؟؟

سلام

خوب حالا منه خريدار باز مي تونم كه رو يه سيستم ديگه نصب كنه؟؟درسته؟؟؟
وقتی که کد سخت افزارها با هم تقاوت دارن، جطور میتونه استفاده کنه؟
برنامه مشابه دارم ولی متاسفانه تجاری هست و نمیتونم اینجا قرارش بدم لذا توضیحاتش رو میدم
همانطور که گفته شد یک کد برای مشتری یا همون کد محصول قرار میدید
حالا این کد محصول یک الگوریتم منحصر به فرد داره( که خودتون میدونید)
حالا شما یک نسخه keygen قاعدتاً باید بسازید دیگه؟
در اون برنامه یک بخش قرار میدی به نام کد ساز، که این کد رو تولید و در بانک ذخیره می کنه
در برنامه ی کلاینت یا به اصطلاح (برنامه ای که در اختیار مشتری هست) میای این کد رو که توسط کد ساز ساخته میشه رو چک می کنه، اگه الگوریتمش همخوانی داشت مابقی ماجرا...
با این کار می تونید مثلاً به هر مشتری به تعداد محدود کد بدید مثلاً تا 3 بار
امیدوارم متوجه شده باشید

kahrobaa
دوشنبه 23 دی 1392, 12:50 عصر
سلام
از برنامه خوبت خیلی ممنون:تشویق:

فقط یه سوال :
این کد فعال سازی تا چند بار معتبره؟
یعنی این که هر مشتری چند بار میتوه برنامه را فعال کنه؟ (در رابطه با label که توی فرم هست::: جهت دریافت کد فعال سازی با ما تماس بگیرید )
مگه نباید تا 3 بار باشه؟

تازشم چرا هر بار که برنامه را اجرا مکنیم باید فعالسازی انجام شه؟

behi1ty
دوشنبه 23 دی 1392, 13:10 عصر
سلام

وقتی که کد سخت افزارها با هم تقاوت دارن، جطور میتونه استفاده کنه؟
برنامه مشابه دارم ولی متاسفانه تجاری هست و نمیتونم اینجا قرارش بدم لذا توضیحاتش رو میدم
همانطور که گفته شد یک کد برای مشتری یا همون کد محصول قرار میدید
حالا این کد محصول یک الگوریتم منحصر به فرد داره( که خودتون میدونید)
حالا شما یک نسخه keygen قاعدتاً باید بسازید دیگه؟
در اون برنامه یک بخش قرار میدی به نام کد ساز، که این کد رو تولید و در بانک ذخیره می کنه
در برنامه ی کلاینت یا به اصطلاح (برنامه ای که در اختیار مشتری هست) میای این کد رو که توسط کد ساز ساخته میشه رو چک می کنه، اگه الگوریتمش همخوانی داشت مابقی ماجرا...
با این کار می تونید مثلاً به هر مشتری به تعداد محدود کد بدید مثلاً تا 3 بار
امیدوارم متوجه شده باشید

با سلام
نسخه keygen بايد در اختيار مشتري قرار بديم يا براي خودمان هست؟

danialafshari
دوشنبه 23 دی 1392, 17:27 عصر
با سلام
نسخه keygen بايد در اختيار مشتري قرار بديم يا براي خودمان هست؟

معلومه دیگه ماله برنامه نویسه !
اگر دست کسی بیفته برنامت میشه = free مجانی

hessam2003
چهارشنبه 02 بهمن 1392, 10:23 صبح
سلام.
دوست عزیز شما از چه راه حلی برای نمایش این فرم در برنامه هاتون استفاده کردید؟
چون این فرم باید یک مرتبه اجرا بشه و بعد از فعال سازی دیگه اجرا نشه و فرم2 اجرا بشه.

danialafshari
چهارشنبه 02 بهمن 1392, 10:37 صبح
سلام.
دوست عزیز شما از چه راه حلی برای نمایش این فرم در برنامه هاتون استفاده کردید؟
چون این فرم باید یک مرتبه اجرا بشه و بعد از فعال سازی دیگه اجرا نشه و فرم2 اجرا بشه.

سلام
در تمامی تاپیک های قفل نرم افزاری به این سوال جواب داده شده
شما می تونی اطلاعات رو در فایل، در دیتابیس و رجیستری ذخیره کنید
که اغلب در رجیستری ذخیره میشه
آموزش کار با رجیستری هم به صورت کامل در سایت موجوده
موفق باشید

hessam2003
چهارشنبه 02 بهمن 1392, 10:48 صبح
سلام.
دوست عزیز شما از چه راه حلی برای نمایش این فرم در برنامه هاتون استفاده کردید؟
چون این فرم باید یک مرتبه اجرا بشه و بعد از فعال سازی دیگه اجرا نشه و فرم2 اجرا بشه.

hessam2003
چهارشنبه 02 بهمن 1392, 10:49 صبح
من اینجا پست میذارم اما پستمو به یک صفحه دیگه میبره موضوع چیه؟

meysam_online2012
پنج شنبه 03 بهمن 1392, 13:36 عصر
سلام

وقتی که کد سخت افزارها با هم تقاوت دارن، جطور میتونه استفاده کنه؟
برنامه مشابه دارم ولی متاسفانه تجاری هست و نمیتونم اینجا قرارش بدم لذا توضیحاتش رو میدم
همانطور که گفته شد یک کد برای مشتری یا همون کد محصول قرار میدید
حالا این کد محصول یک الگوریتم منحصر به فرد داره( که خودتون میدونید)
حالا شما یک نسخه keygen قاعدتاً باید بسازید دیگه؟
در اون برنامه یک بخش قرار میدی به نام کد ساز، که این کد رو تولید و در بانک ذخیره می کنه
در برنامه ی کلاینت یا به اصطلاح (برنامه ای که در اختیار مشتری هست) میای این کد رو که توسط کد ساز ساخته میشه رو چک می کنه، اگه الگوریتمش همخوانی داشت مابقی ماجرا...
با این کار می تونید مثلاً به هر مشتری به تعداد محدود کد بدید مثلاً تا 3 بار
امیدوارم متوجه شده باشید


سلام دوست عزیز
من در مورد امنیت برنامه چیزی نمیدونم و کار نکردم تا حالا
میشه در این مورد بیشتر توضیح بدین