PDA

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



A_1397
پنج شنبه 04 اسفند 1401, 10:37 صبح
دوستان ما یه برنامه ویندوزی داریم که روی سرور نصب میشه و کلابنت ها میتونن شورتکاته exe برنامه رو روی سیستم شون اجرا کنن و همچنین با شیر کردن فولدر نصب شده روی سرور هم امکان دسترسی کاربرها به ریپورت ها یا عکس ها و ... داده میشه.
مشکلمون اینه که هرکسی که فایل نصبی رو داشته باشه میتونه برنامه رو روی هر سیستمی نصب کنه و استفاده کنه.
حالا من دنبال یه جور قفل نرم افزاری یا سخت افزاری هستم که کاربرها فقط بتونن همون شورتکاته exeای که روی سرور هست رو اجرا کنن و باش کارکنن واگه کسی فایل نصبی برنامه رو روی سیستمش بصورت جداگانه نصب کرد، برنامه اجرا نشه.
اگه سوالم خیلی سطح پایین و ابتدایه عذرمیخام چون من هیچ چیز در مورد قفل ها نمیونم :لبخندساده:

mahdi.m.sh
پنج شنبه 04 اسفند 1401, 17:53 عصر
دوست عزیز سلام

دو تا راهکار داری :

1- سریال Cpu و Ram (یا هر سخت افزار دیگه ای که مد نظرت هست ) رو از سروری که برنامه اونجا نصب شده استخراج کنی و مثل یه رشته همه رو کنار هم قرار میدی و سپس تبدیل به یه Hash می کنی .
Hash رو به صورت سخت افزار داخل کد برنامه قرار می دی .
به محض اینکه کاربر میخواد برنامه رو اجرا کنه داخل Form Load صفحه اول برنامت سریال سخت افزار هایی که از قبل Hash کردی رو مجدد استخراج و با Hashی که داخل کد برنامه قرار دادی مقایسه کنی .
اگر برابر بود ==> به کاربر اجازه میدی بقیه کارهاشو انجام بده
اگر برابر نبود ==> پیغام خطا و توقف برنامه.


2- ولی برای برنامه های ویندوزی می تونید از نرم افزار 2x استفاده کنید (فقط لایسنس اون کمی هزینه داره :چشمک:)

A_1397
دوشنبه 15 اسفند 1401, 13:03 عصر
دوست عزیز سلام

دو تا راهکار داری :

ممنون از راهنماییتون.
از راهکار اول استفاده کردم با این کد:
Dim mbInfo = String.Empty Dim scope As ManagementScope = New ManagementScope("\" & ip_server & "\root\cimv2")
scope.Connect()
Dim wmiClass As ManagementObject = New ManagementObject(scope, New ManagementPath("Win32_BaseBoard.Tag=""Base Board"""), New ObjectGetOptions())


For Each propData As PropertyData In wmiClass.Properties
If propData.Name.ToUpper = "PRODUCT" Then mbInfo = mbInfo & (propData.Value) & " "
If propData.Name.ToUpper = "SERIALNUMBER" Then mbInfo = mbInfo & (propData.Value) & " "
Next

حالا مشکل اینجاست که برای کلاینت ها روی خط Dim scope As ManagementScope = New ManagementScope("\" & ip_server & "\root\cimv2") اررور Access Dined میده!

mahdi.m.sh
جمعه 19 اسفند 1401, 18:15 عصر
یه نگاهی به این لینک کنید مشکل شما در اینجا توضیح داده شده


https://social.msdn.microsoft.com/Forums/ar-SA/cbd93b81-2c23-4363-a00e-f702d6fa1349/managementscopeconnect-giving-an-error-quotaccess-denied-exception-from-hresult-0x80070005?forum=vbgeneral