PDA

View Full Version : مشکل در ساخت قفل نرم افزاری



mehran788
چهارشنبه 18 فروردین 1395, 13:23 عصر
سلام . خسته نباشید
من برای ساخت قفل نرم افزاری سریال هارد ، سی پی یو ، و مادر برد رو می گیرم و می خوام باهاشون کد فعال سازی بسازم ولی این کد خیلی طولانی میشه چیکار کنم یکم کوتاه تر باشه. دلیل اینکه از شماره سریال سه قطعه استفاده می کنم اینه که شنیدم احتمال دداره تو بعضی سیستم ها نتونه شماره سریال یک یا دو رو بخونه. لطفا راهنماییم کنید
ممنون

Pr0grammer
پنج شنبه 19 فروردین 1395, 04:19 صبح
فکر نکنم بشه کاری کرد که شماره سریال کوتاه بشه، اما می تونید بخشی از متن مورد نظرتون رو با استفاده از Substring برداشت و استفاده کنید.

موفق باشید/

mojtabamalaekeh
شنبه 21 فروردین 1395, 01:22 صبح
سلام :)
فقط CPU رو بگیرید که 16 کاراکتره.
اگر هم دریافت کد CPU خطا داد اصلا به کاربر اجازه اجرای برنامه رو ندین چون احتمالا روی «ویندوز مجازی» اجرا کرده و نیتش پاک نبوده!

mrali.jalali
شنبه 21 فروردین 1395, 02:33 صبح
یک سوال : من برنامم تحت شبکه س و برای ساخت سریال می خوام سریال رو برای سرور بدم . یعنی برای تک تک سیستم ها نخام این کارو بکنم . اینجوری موقع اجرا بر روی کلاینت ها خطای قفل رخ میده . راهکاری وجود داره؟

abdullah20
شنبه 21 فروردین 1395, 04:24 صبح
یعنی چی خطای قفل میده؟
شما یه جدول داخل دیتابیس بسازید و بر اساس اون از طریق کلاینت ها بررسی کنید نرم افزار خریداری شده یا نه

mrali.jalali
شنبه 21 فروردین 1395, 05:21 صبح
من بر اساس مشخصات پردازنده و ... میخوام یک سریال بسازم . کاربر با اون سریال یک سریال دیگر دریافت می کنه و پس از ثبت داخل دیتابیس ثبت میشه.

با هر بار اجرا برنامه بر اساس مشخصات پردازنده و ... همون سریال رو میسازم و با سریال دوم که در دیتابیس ذخیره شده مقایسه میکنم . حالا اگر کلاینت برنامه ش رو اجرا کنه مشخصات پردازنده کلاینت رو به عنوان سریال اول میسازه که با سریال دوم همخوانی نداره


برنامه م به این صورت اشتراک گذاشتم . برنامه رو روی سرور اشتراک گذاشتم و برای هر کاربر یک میانبر گذاشتم

mojtabamalaekeh
شنبه 21 فروردین 1395, 12:05 عصر
دو نسخه فایل اجرایی بسازید: نسخه کلاینت و نسخه سرور (با دستورات پیشپردازنده یا با افزودن Project به Solution)
وقتی کلاینتی میخواد اجرا بشه لازمه که نسخه سرور هم اجرا باشه و کلاینت بهش وصل بشه تا بتونه اجرا بشه.
در واقع کلاینت ها کد فعالسازی نمیگیرن و تنها ضمانت اجراشون اینه که توی اون شبکه باشن و موقع اجراشون هم سرور در حال اجرا باشه.

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

mrali.jalali
شنبه 21 فروردین 1395, 13:17 عصر
دو نسخه فایل اجرایی بسازید: نسخه کلاینت و نسخه سرور (با دستورات پیشپردازنده یا با افزودن Project به Solution)
وقتی کلاینتی میخواد اجرا بشه لازمه که نسخه سرور هم اجرا باشه و کلاینت بهش وصل بشه تا بتونه اجرا بشه.
در واقع کلاینت ها کد فعالسازی نمیگیرن و تنها ضمانت اجراشون اینه که توی اون شبکه باشن و موقع اجراشون هم سرور در حال اجرا باشه.

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

دقیق متوجه نشدم . ممنون میشم یکم بیشتر راهنمایی کنید؟ برنامه باید روی سرور همیشه اجرا بشه ؟

mojtabamalaekeh
شنبه 21 فروردین 1395, 15:50 عصر
زمانی که «کلاینتی» میخواد اجرا بشه، «نسخه سرور برنامه» هم باید در حال اجرا باشه.
محیط عملیاتی شما چجور مکانی هست؟

mrali.jalali
چهارشنبه 01 اردیبهشت 1395, 10:39 صبح
زمانی که «کلاینتی» میخواد اجرا بشه، «نسخه سرور برنامه» هم باید در حال اجرا باشه.
محیط عملیاتی شما چجور مکانی هست؟


من در یک شبکه محلی . که معمولا سرورشون یکی از کلاینت هاست. چند کاربره (زیاد نیست) . با sql , سی شارپ

متوجه منظورتون نشدم . میشه واضح تر بگید . ممنون

mojtabamalaekeh
چهارشنبه 01 اردیبهشت 1395, 12:21 عصر
خودتون بخشی از جواب رو گفتین:

من برنامم تحت شبکه س و برای ساخت سریال می خوام سریال رو برای سرور بدم . یعنی برای تک تک سیستم ها نخام این کارو بکنم .
یعنی یکی از کلاینت ها رو به عنوان سرور در نظر گرفتین! درسته؟
و احتمالا توی بقیه کلاینت ها هم IP سرور رو دادین که بتونید به SQL Server وصل بشین! درسته؟
اگه دو تا نتیجه گیری بالا اشتباهن بگین که بهتر راهنمایی بشین.

حالا....
نسخه سرور همونطور که خودتون گفتین:
با هر بار اجرا برنامه بر اساس مشخصات پردازنده و ... همون سریال رو میسازم و با سریال دوم که در دیتابیس ذخیره شده مقایسه میکنم .

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

توضیح بیشتر: سرور اگه کد فعالسازیش غلط باشه اجرا نمیشه و خطا میده.
کلاینت اگر سرورش اجرا نباشه اجرا نمیشه و خطا میده.

حالا از کجا بفهمیم نرم افزار روی سرور در حال اجراست یا نه؟
شما باید یه پیغام به سرور بفرستید (از روی IPش)، اگه جواب داد یعنی در حال اجراست و اگر نداد که هیچ!
لازمه اش آشنایی با سوکت در سی شارپه System.Net.Sockets

شاید هم ساده تر این باشه که بجای سوکت پروگرمینگ از دیتابیس استفاده کنید. البته فعلا پیشنهادی برا این مورد ندارم.

mrali.jalali
پنج شنبه 02 اردیبهشت 1395, 11:58 صبح
خودتون بخشی از جواب رو گفتین:

یعنی یکی از کلاینت ها رو به عنوان سرور در نظر گرفتین! درسته؟
و احتمالا توی بقیه کلاینت ها هم IP سرور رو دادین که بتونید به SQL Server وصل بشین! درسته؟
اگه دو تا نتیجه گیری بالا اشتباهن بگین که بهتر راهنمایی بشین.

حالا....
نسخه سرور همونطور که خودتون گفتین:

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

توضیح بیشتر: سرور اگه کد فعالسازیش غلط باشه اجرا نمیشه و خطا میده.
کلاینت اگر سرورش اجرا نباشه اجرا نمیشه و خطا میده.

حالا از کجا بفهمیم نرم افزار روی سرور در حال اجراست یا نه؟
شما باید یه پیغام به سرور بفرستید (از روی IPش)، اگه جواب داد یعنی در حال اجراست و اگر نداد که هیچ!
لازمه اش آشنایی با سوکت در سی شارپه System.Net.Sockets

شاید هم ساده تر این باشه که بجای سوکت پروگرمینگ از دیتابیس استفاده کنید. البته فعلا پیشنهادی برا این مورد ندارم.


درست منظورمو متوجه شدید . فقط به نظر شما برای سرور باید یک فایل اجرایی مجزا باشه ؟ چون قراره قفل رو شناسایی کننه؟

ذخیره قفل در دیتابیس یکم نا امن میشه . شاید سوکت راه حله مناسب تری باشه فقط اگر قرار باشه کلاینت برنامه شو یه موقع از طریق اینترنتی و آی پی ولید اجرا کنه سوکت جواب میده بهش ؟؟ ممنون کمک کردید

mojtabamalaekeh
پنج شنبه 02 اردیبهشت 1395, 15:22 عصر
سرور باید یک فایل اجرایی مجزا باشه ؟ چون قراره قفل رو شناسایی کننه؟همش دست خودتونه. بستگی به نوع پروژه داره.
ممکنه لازم باشه نسخه جداگانه برا سرور بسازید.
ممکنه هم یه فایل بسازید که وقتی اجرا شد با بررسی IP یا بررسی وجود یه فایل کنار برنامه یا.... تصمیم بگیره سرور باشه یا کلاینت.

ذخیره قفل در دیتابیس یکم نا امن میشهشاید!
باید وقت گذاشت و فکر کرد. ولی خب آنلاین چک کنید راحت تر و سریعتر جواب میگیرید.

اگر قرار باشه کلاینت برنامه شو یه موقع از طریق اینترنتی و آی پی ولید اجرا کنه سوکت جواب میده بهش؟بله. سوکت یعنی پورت + آی پی
شما IP بدین اون وصل میشه.

البته من سر از اینترنت و شبکه در نمیارم.
امیدوارم بقیه جواب بدن :)