PDA

View Full Version : سوال: چگونه میتوان از اجرای دوباره نسخه کپی شده یک فایل اکسس روی هارد یک کامپیوتر جلوگیری کرد....



narpco
سه شنبه 20 خرداد 1399, 12:46 عصر
چگونه میتوان از اجرای دوباره نسخه کپی شده یک فایل اکسس روی هارد یک کامپیوتر جلوگیری کرد....


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

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

mazoolagh
چهارشنبه 21 خرداد 1399, 10:46 صبح
گذشته از این که خواسته شما شدنی هست یا نه، نکته ای که به ذهن میرسه این هست که:
از نگاه اخلاق مهندسی، توافق شما با خریدار چی بوده؟

فرضا اگر برنامه حسابداری قرار هست فقط در یک مؤسسه استفاده بشه، روش متعارف این هست که اسم و مشخصات اون مؤسسه در تمام گزارشها و خروجی ها hardcode بشه.
و قطعا خریدار هم این رو میدونه - حالا این که روی چند دستگاه نصب بشه در لایسنس تعریف میشه که single user هست یا تحت شبکه و مواردی از این دست.
این دست برنامه ها نیازی به قفل هم ندارن چون عملا جای دیگه غیر قابل استفاده ان.

فقط تصور کنین خواسته شما رو مایکروسافت رو برنامه آفیس پیاده میکرد!

بعد از این موضوع:
سناریو پیشنهادی خودتون هم سیستم رو کند میکنه و هم اینکه بدون نیاز به حتی یک حط کد یا داشتن تخصص در یک دقیقه قابل دور زدن هست!

narpco
پنج شنبه 22 خرداد 1399, 14:22 عصر
دوست عزیز و گرامی . با تشکر از شما
بنده هدف های آموزشی رو دنبال می کنم نه برنامه نویسی تجاری رو
سوال بنده جنبه آموزش داره نه اینکه برنامه ای داشته باشم و بخوام تجاری کنم و این داستانا
شما فرض بفرمایید توافق بر این هست که نرم افزاری تحت اکسس تولید میشه و خریدار تعهد میده که روی یک رایانه و تنها کار یک شرکت رو با این برنامه انجام بده
و برنامه روحتی روی همون رایانه کپی نکنه
اینجا ایرانه و مفهوم اخلاق مهندسی که میفرمایید خیلی کاربردی نداره هر کسی میخواد یک برنامه رو با کپی کردن و رایگان استفاده کنه حتی اگر قیمتش 1000 تومن باشه حتی همون آفیس که شما فرمودید
پس برنامه نویس باید تدابیری بیاندیشه که اگر این اتفاق افتاد سرش کلاه نره
من یک سناریو پیشنهاد کردم و عرض کردم یک چیزی شبیه به این نه دقیقا همین
سنارویوی بهتر اینه که تو فایل اجرایی برنامه ادرس مشخصی درج بشه و اگر فایل تو اون مسیر نبود اجرا نشه
ساده روان و بدون هدر دادن زمان
بنده فقط کد وی بی این امر رو میخواستم همین ....:)))
حالا اگر عزیزی سنارویی بهتری هم داشت بروی چشم بنده کمترین .....با اغوش باز می پذیریم
چون بنده شخصا اینجا برای یادگیری هستم نه ادعای استادی
سوالاتی هم که مطرح می کنم در جریان کار پروژه بهش بر میخورم و با عزیزان دیگه هم به اشتراک میزارم
به این خاط که دوستان شاید یک روزی با این مشکل برخورد کنند
و اینکه ذکات علم رو بدیم
و اساتید محبت میکنن جواب میدن
حالا اگر شما عزیز بزرگوار پیشنهای برای حل این مشکل دارید به دیده منت دو زانو نشسته گوش فرا می دهیم
و چقدر عالیه که حضرتعالی نکات مهمی رو که شاید به فکر بنده نرسیده باشه رو تذکر میدین ...که این یعنی آموزش خالص
بسیار سپاسگزارم

narpco
چهارشنبه 18 تیر 1399, 09:42 صبح
اساتید راه حلی برای پیشنهاد هست؟ ممنونم

atf1379
چهارشنبه 18 تیر 1399, 09:49 صبح
سلام
کاش استاد نبیل پیروز مهر حضور داشتند و در رابطه با این موضوع راهنمائی می کردند.

narpco
سه شنبه 24 تیر 1399, 11:25 صبح
سلام ....ما بسیار مشتاقیم که هر عزیزی که سوادش از ما بیشتره راهنمایی بفرمایند ...چون موضوعی هست که من خیلی دیدم دوستان سئوال دارن ..و خیلی ها هم اصلا به فکرشون نرسیده که ممکنه همچین سنارویویی هم باشه .....
به هر حال منتظر راهنمایی دوستان هستیم ....:تشویق:

eb_1345
چهارشنبه 25 تیر 1399, 00:09 صبح
سنارویوی بهتر اینه که تو فایل اجرایی برنامه ادرس مشخصی درج بشه و اگر فایل تو اون مسیر نبود اجرا نشه
ساده روان و بدون هدر دادن زمان



سلام
خوب اگر مشکل با چک کردن آدرس حل میشود میتوانید در رویداد لود فرم استارت آپ فایل اجرائی آدرس فایل بانک اطلاعاتی برنامه را درج کنی که اگر فایل در آدرس فوق وجود نداشت برنامه بسته شود
مثلاً فرض کند نام فایل بانک اطلاعاتی test.accdb است و در درایو E قرار دارد


If Len(Dir("e:\test.accdb", vbDirectory)) = 0 Then
MsgBox "xxxxxxxxxxxxxxxx"
DoCmd.Quit
End If


البته بکار بردن این کد برای منظور فوق خیلی حرفه ای بنظر نمیرسد و با کمی خلاقیت میتوان دنبال راه حل بهتری بود

RESMAILY
چهارشنبه 25 تیر 1399, 09:58 صبح
به نام خدا
با سلام می شود با مشخصات مادربرد و هارد و غیره یک سریال اختصاصی درست کرد که برنامه موقع بازشدن اول آن را کنترل کند. اگر تطبیق نداشت خارج شود.
این روش جلوی افراد حرفه ای را نمی گیرد. ولی افراد حرفه ای هم نیاز به این قبیل برنامه ها ندارند:لبخندساده:

eb_1345
چهارشنبه 25 تیر 1399, 11:10 صبح
به نام خدا
با سلام می شود با مشخصات مادربرد و هارد و غیره یک سریال اختصاصی درست کرد که برنامه موقع بازشدن اول آن را کنترل کند. اگر تطبیق نداشت خارج شود.
این روش جلوی افراد حرفه ای را نمی گیرد. ولی افراد حرفه ای هم نیاز به این قبیل برنامه ها ندارند:لبخندساده:

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

narpco
پنج شنبه 26 تیر 1399, 00:12 صبح
آفرین دقیقا منظورم همین هست .....خدا رو شکر که تونستم منظورم رو کامل بیان کنم .....
در حال حاضر برنامه داری قفل سریال هارد دیسک و مادر بورد هست و روی یک سیستم داره کار می کنه و سیستم رو معتبر شناسایی می کنه ...
اما................
اگر کاربر پوشه برنامه رو تو یک درایو دیگه کپی کنه بازهم میتونه وارد بشه دیتا بیس رو دستی خالی کنه و باهاش کار یک شرکت که چه عرض کنم 100 تا شرکت رو انجام بده ....در حالیکه پولی که داده اخلاقاٌ برای انجام کار یک شرکت هست ...
در ضمن ما اصلا کاری نداریم که کاربرما حرفه ای هست یا نه ..این روزها فقط کافیه به عموگوگل بگین که میخواین چیکار کنید 100 تا سورس فارسی و انگلیسی بهتون میده
پس خیلی نباید دلمون رو خوش کنیم و خودمون رو گول بزنیم که کاربر ما غیر حرفه ای هست ....


با سپاس فرآوان از دوست عزیزمون ..
eb_1345 (https://barnamenevis.org/member.php?424036-eb_1345)......و اما نکته بعد ....دوست گلم ..من فقط یک سناریویی رو پیشنهاد دادم ...هدفم همونی هست که خودتون فرمودین ....بسیار خوشحال میشم .....هر سناریوی کامل تری در نظر دارید ....بفرمایید تا ما هم بتونیم استفاده کنیم ......بسیار سپاسگزار میشم ....:قلب::قلب::قلب::قلب:

شاگرد آرام
پنج شنبه 26 تیر 1399, 00:19 صبح
ضمن عرض سلام خدمت دوستان عزیز
در مورد بحثی که مطرح شد من هم چند سال پیش دغدغه داشتم و این دغدغه الان کاملا حل شده . برای جلوگیری از کپی اکسس راه های زیادی وجود داره ولی اگر کسی حرفه ای باشه می تونه تمام این راه ها رو دور بزنه . از سریال هارد و سی پی یو ، استفاده از رجیستری ، چک کردن وضعیت فایل و ... . اما بهترین راه حل پشتیبانی خوب و استاندار هست . وقتی شما یک محصول رو می نویسین نیاز به پشتیبانی داره و طبیعاتا شما به کسانی پشتیبانی می دین که از شماخرید کردند . اگر کسی نرم افزار شما رو کپی کنه بالاخره بعد از یکی دو سال نیاز به پشتیبانی پیدا میکنه و اونوقته که ...

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

narpco
پنج شنبه 26 تیر 1399, 00:21 صبح
درمورد این کد :

If Len(Dir("e:\test.accdb", vbDirectory)) = 0 Then
MsgBox "xxxxxxxxxxxxxxxx"
DoCmd.Quit
End If

سناریو درسته اما دیتا بیس هرجایی میتونه باشه این مهم نیست ..برای من مسیر قرار گرفتن فایل اجرایی aaa.accde مهمه
و من متوجه این نشدم که در این کد میگه اگر فایل دیتا بیس در مسیری که گفته نشده نبود برنامه بسته بشه درسته ؟
پس بجای اون نام و پسوند فایل هر نام و پسوندی میشه قرار داد
دستور حالت جنرال داره
درست فهمیدم ؟
از طرفی هم حق با شماست ...
کاربر می تونه هر جایی میخواد بک اپ هاشو ذخیره کنه ولی برای اجرای برنامه باید حتما فایل دیتا بیس اصلی در مسیر خاص مورد نظر ما قرار داشته باشه
یا بک اپ با فایل اصلی دیتا بیس تعویض بشه که بازهم ادرس ما ثابت هست ...
منتظر سنارویو ها و پیشنهادات دوست عزیزمون هستیم ...:تشویق::تشویق::تشویق::تشویق :

narpco
پنج شنبه 26 تیر 1399, 00:26 صبح
.................................................. .........................................

narpco
پنج شنبه 26 تیر 1399, 00:27 صبح
ضمن عرض سلام خدمت دوستان عزیز
در مورد بحثی که مطرح شد من هم چند سال پیش دغدغه داشتم و این دغدغه الان کاملا حل شده . برای جلوگیری از کپی اکسس راه های زیادی وجود داره ولی اگر کسی حرفه ای باشه می تونه تمام این راه ها رو دور بزنه . از سریال هارد و سی پی یو ، استفاده از رجیستری ، چک کردن وضعیت فایل و ... . اما بهترین راه حل پشتیبانی خوب و استاندار هست . وقتی شما یک محصول رو می نویسین نیاز به پشتیبانی داره و طبیعاتا شما به کسانی پشتیبانی می دین که از شماخرید کردند . اگر کسی نرم افزار شما رو کپی کنه بالاخره بعد از یکی دو سال نیاز به پشتیبانی پیدا میکنه و اونوقته که ...

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



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


در نهایت کسی باید نظر آخر رو بده که سواد کد نویسی ش از من بیشتره ....من که فقط سناریو هایی که به ذهنم میرسه میگم ....نمیدونم چقدر درسته ..:متفکر:
و اینکه نیاز به قطعه کدش داریم ....چون من خیلی وارد نیستم به کد نویسی vb

eb_1345
پنج شنبه 26 تیر 1399, 21:42 عصر
درمورد این کد :

If Len(Dir("e:\test.accdb", vbDirectory)) = 0 Then
MsgBox "xxxxxxxxxxxxxxxx"
DoCmd.Quit
End If

سناریو درسته اما دیتا بیس هرجایی میتونه باشه این مهم نیست ..برای من مسیر قرار گرفتن فایل اجرایی aaa.accde مهمه
و من متوجه این نشدم که در این کد میگه اگر فایل دیتا بیس در مسیری که گفته نشده نبود برنامه بسته بشه درسته ؟
پس بجای اون نام و پسوند فایل هر نام و پسوندی میشه قرار داد
دستور حالت جنرال داره
درست فهمیدم ؟
از طرفی هم حق با شماست ...
کاربر می تونه هر جایی میخواد بک اپ هاشو ذخیره کنه ولی برای اجرای برنامه باید حتما فایل دیتا بیس اصلی در مسیر خاص مورد نظر ما قرار داشته باشه
یا بک اپ با فایل اصلی دیتا بیس تعویض بشه که بازهم ادرس ما ثابت هست ...
منتظر سنارویو ها و پیشنهادات دوست عزیزمون هستیم ...:تشویق::تشویق::تشویق::تشویق :



سلام

ارائه این کد توسط بنده صرفاً بخاطر درخواست شما در پست شماره 3 بوده و همانطورکه عرض کردم این روش حرفه ای نیست و براحتی قابل دور زدنه

در کد فوق بررسی میشه که اگر دیتابیس برنامه با نام test.accdb در درایو E وجود نداشت برنامه بسته شود. حالا همونطور که خودتون هم اشاره کرده ای تصور کنید که مشتری شما یک کپی ازبرنامه ( شامل فایل اجرائی و بانک اطلاعاتی) بگیره و در درایوی دیگر قرار بده و بطور دستی جداول بانک اطلاعاتی فایل کپی شده را به برنامه لینک نماید . بنابراین در زمان اجرای فایل اجرائی کپی شده هیچ مشکلی پیش نمیاد چون دیتابیس فایل اول در همون مسیر معرفی شده وجود داره و پیغامی هم برای وجود نداشتن آن صادر نمیشه و از طرفی اطلاعات وارد شده از طریق فایل اجرای نسخه کپی شده هم در دیتابیس دوم ثبت میشه .

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

موفق باشی

narpco
جمعه 27 تیر 1399, 00:16 صبح
سلام

ارائه این کد توسط بنده صرفاً بخاطر درخواست شما در پست شماره 3 بوده و همانطورکه عرض کردم این روش حرفه ای نیست و براحتی قابل دور زدنه

در کد فوق بررسی میشه که اگر دیتابیس برنامه با نام test.accdb در درایو E وجود نداشت برنامه بسته شود. حالا همونطور که خودتون هم اشاره کرده ای تصور کنید که مشتری شما یک کپی ازبرنامه ( شامل فایل اجرائی و بانک اطلاعاتی) بگیره و در درایوی دیگر قرار بده و بطور دستی جداول بانک اطلاعاتی فایل کپی شده را به برنامه لینک نماید . بنابراین در زمان اجرای فایل اجرائی کپی شده هیچ مشکلی پیش نمیاد چون دیتابیس فایل اول در همون مسیر معرفی شده وجود داره و پیغامی هم برای وجود نداشتن آن صادر نمیشه و از طرفی اطلاعات وارد شده از طریق فایل اجرای نسخه کپی شده هم در دیتابیس دوم ثبت میشه .

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

موفق باشی


سلام و سپاس از شما و ممنون از وقتی که گذاشتین
توضیحات کاملا بجا و دقیق بود
ذکر چند نکته ضروری هست
ما در برنامه جدول setting داریم که اطلاعات خریدار در اون ثبت میشه و همون مشخصات در گزارشات چاپ میشه
در هنگام نصب اطلاعات سخت افزاری خریدار در جدول registery ثبت میشه و در هر بار ورود این اطلاعات کنترل میشه که اگر مطابقت داشت برنامه باز میشه
اینو میخوام عرض کنم که مسائل امنیتی رعایت شده ....اما....
کپی شدن به تعداد زیاد از نرم افزار روی همون رایانه مشکلی هست که هنوز نتونستم حلش کنم
بنده حتی از دوستان خواهش کردم اگر هزینه ای هم داره من تقدیم کنم که بصورت پی وی برای خودم انجام بشه و تحویل بشه ..منتها سنارویی که نشه دور زد
حالا اگر نیازی هست به جداول برنامه چیزی اضافه کنیم ..مشکلی نیست
اگر فقط با کد نویسی و کنترل در هنگام اجاری برنامه مشکل حل میشه بازم موردی نیست
هر سنارویی که به تجریه و علم مهندسی ثابت شده که حداقل 90 % امن هست ....
به هر حال من منتظر پاسخ دوستان هستم .....
اگرهم عزیزی علاقه مند بود که هزینه بگیره و انجام بده بازم من درخدمتم .......ای دی تلگرام بنده ACCMAN@
بسیار ممنون و سپاسگزارم ....


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

eb_1345
یک شنبه 29 تیر 1399, 12:54 عصر
همچنین ممنون میشم در مورد قفل نرم افزاری توضیح بفرمایید وومنظور همون توکن هست ؟ یا داستان دیگری دارد؟
سلام
منظورم کد فعال سازی برنامه است که توسط فروشنده در اختیار خریدار قرار می گیرد . واین کد برای هر کامپیوتر فرق می کند . به عبارتی ساده تر برای اجرای برنامه بر روی هر کامپیوتر نیاز به یک کد فعالسازی منحصربفردمی باشد که توسط فروشنده دراختیار خریدار قرار می گیرد. مثلاً اگر خریدار نیاز داشته باشد که برنامه بر روی کامپیوتر دیگر اجرا نماید باید کد فعالسازی دیگر داشته باشد .
در خصوص اون روشی هم که عرض کردم قبل از ورود اطلاعات کاری ، نام شرکت مربوطه از طریق یک فرم در جدول و در رجیستری رایانه ثبت شود بازهم موضوع کپی کردن برنامه بقصد انجام کار شرکت یا شرکت های دیگر منتفی نمی باشد چرا که خریدار میتواند در زمان تهیه خروجی برنامه مثل تهیه گزارشات نام شرکت را موقتاً را تغییر دهد.
شاید این ایده خیلی منطقی نباشه که اگر بر اساس توافق نام شرکت ( نامی که بر روی گزارشات ودیگر خروجی ها درج میشود ) در اختیار فروشنده قرار بگیرد و فروشنده آن نام را در قسمت کد نویسی برنامه که قابل دسترسی و ویرایش هم نمی باشد درج نماید کپی کردن برنامه بقصد انجام کار دیگر شرکتها از طرف خریدار کار بیهوده ایست چون نام یک شرکت در برنامه معرفی شده و آن نام بر روی تمام گزارشات و دیگر خروجی ها درج میشود.

RESMAILY
یک شنبه 29 تیر 1399, 13:17 عصر
به نام خدا
با سلام. ازاین کار هم جلوگیری می کند. به نحویکه اگر سیستم فرمت شود اصلا روی درایو اولی هم کار نخواهد کرد.
شماره سریال های ثابت برای یک سیستم و شماره رسیال درایوها هم برای درایو مورد نظر .

atf1379
یک شنبه 29 تیر 1399, 15:04 عصر
به نام خدا
با سلام. ازاین کار هم جلوگیری می کند. به نحویکه اگر سیستم فرمت شود اصلا روی درایو اولی هم کار نخواهد کرد.
شماره سریال های ثابت برای یک سیستم و شماره رسیال درایوها هم برای درایو مورد نظر .
سلام جناب RESMAILY
با عرض پوزش ، توضیحتون خیلی مختصر و پر از ابهامه
ازاین کار هم جلوگیری می کند:متفکر:
به نحویکه اگر سیستم فرمت شود اصلا روی درایو اولی هم کار نخواهد کرد.:متفکر:
شماره رسیال درایوها هم برای درایو مورد نظر :متفکر:

این موارد چه کمکی به جلوگیری از کپی برنامه بر روی یک سیستم می کنه ؟
توضیحات جناب eb_1345 خیلی واضح و روشنه

nabeel
یک شنبه 29 تیر 1399, 17:41 عصر
سلام دوست من

کد فعال سازی نرم افزارتون رو بر مبنای ترکیبی از اطلاعات زیر قرار بدید :

کد سخت افزاری سیستم + نام شرکت ------ طی فرآیند کد نویسی شده جهت ایجاد کد فعال سازی معتبر -------------> کد فعال سازی برنامه مختص هر شرکت

در این حالت حتی بر روی یک سیستم ثابت برای شرکتهای متفاوت , فرد نیاز به دریافت کدهای فعال سازی مجزا خواهد داشت

این یک نمونه سناریوی نمونه هستش که میتونه جوابگوی کار شما باشه

قطعا شما جدولی دارید که در داخل اون نام شرکت درج شده ( و یا مکانی دیگه )

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

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

موفق باشید

پی نوشت : اجرا با خودتون

atf1379
یک شنبه 29 تیر 1399, 19:24 عصر
:تشویق::تشویق::تشویق:

eb_1345
یک شنبه 29 تیر 1399, 21:47 عصر
کد فعال سازی نرم افزارتون رو بر مبنای ترکیبی از اطلاعات زیر قرار بدید :

کد سخت افزاری سیستم + نام شرکت ------ طی فرآیند کد نویسی شده جهت ایجاد کد فعال سازی معتبر -------------> کد فعال سازی برنامه مختص هر شرکت


سلام
آیا باتوجه به اینکه در شرکت های ایرانی از نام فارسی استفاده میشود و این نام فارسی بر روی گزارشات درج میشود ،برای ایجاد کد فعال سازی ترکیب نام فارسی با کد سخت افزاری که بصورت لاتین است مشکل ایجاد نمیکند ؟

nabeel
دوشنبه 30 تیر 1399, 08:15 صبح
سلام



آیا باتوجه به اینکه در شرکت های ایرانی از نام فارسی استفاده میشود و این نام فارسی بر روی گزارشات درج میشود ،برای ایجاد کد فعال سازی ترکیب نام فارسی با کد سخت افزاری که بصورت لاتین است مشکل ایجاد نمیکند ؟

سلام

خیر میتونید از الگوریتمهای رمز نگاری که Unicode رو پشتیبانی میکنند استفاده کنید , به طور مثال AES . الزامی در استفاده از الگوریتمهای رمز نگاری دو سویه وجود نداره , میتونید از SHA هم استفاده کنید ( گو اینکه دومی قاعدتا در مبحث رمز نگاری قرار نمیگیره ولی در اینجا میتونید از اون هم استفاده کنید )

بنده واژه رمز نگاری رو به کار بردم , شما ممکنه مایل باشید یک عملیات ریاضی بر روی حروف تشکیل دهنده نام شرکت بر اساس ASCII Code اونها انجام بدید ( به طور مثال مجموع عددی اسکی کدهای حروف تشکیل دهنده نام شرکت که طبیعتا خروجی اون یک عدد هست و خروجی رو ضربدر یک عدد کنید که ماحصل اون بخشی از کد فعال سازی شما خواهد شد )

رمز نگاری به صورت عمومی یعنی , شما تغییراتی رو بر روی اطلاعات بدید به گونه ای که نسخه تغییر یافته قابلیت تشخیص برای عموم رو نداشته باشه .

به طو مثال شما ممکنه کد سخت افرای 12345 رو از سیستم میگیرید و اون رو ضربدر 2.58 و با 12 جمع میکنید و بخش صحیح اون رو ( 31862 ) به عنوان کد فعال سازی به مشتری اعلام میکنید
این در واقع یک نوع رمز نگاری ساده هستش که کلید و الگوریتم تبدیل اون رو شما تعیین میکنید .

موفق باشید .

eb_1345
دوشنبه 30 تیر 1399, 15:32 عصر
با سلام و تشکر از راهنمائیتون
بنده تا حدوی با الگوریتمهای رمز نگاری آشنائی دارم ولی چون تاکنون با این مورد ( ترکیب کد سخت افزاری سیستم + نام شرکت) برای ایجاد کد فعالسازی برخورد نکرده بودم برایم ابهام پیش آمد که ممکن است نتیجه رضایت بخش نباشه
در تائید فرمایشات شما بطور مثال میتوان با استفاده از تابع زیر حروف و کلمات فارسی را به عدد تبدیل کرد :


Private Function asciien(s As String) As String
Dim i As Integer
For i = 1 To Len(s)
asciien = asciien & CStr(Asc(Mid(s, i, 1)))
Next i
End Function

درفرایند کدنویسی هم میتوان با استفاده از تابع replace حروف عربی همچون (ي و ك)را به (ی و ک) تبدیل کرد و در نهایت میتوان اعداد تولید شده که معمولا طولانی هم است(بسته به تعداد حروف) با استفاده از تابع حذف اعداد تکرای کوچک نمود.

atf1379
سه شنبه 31 تیر 1399, 18:52 عصر
سلام
هدف نهائی از قفل گذاری بر روی برنامه ها اینست که از تکثیر غیر مجاز آنها جلوگیری به عمل آوریم . وقتی نرم افزارهائی وجود دارن که براحتی کدهای برنامه را حتی بعد از کامپایل شدن برمیگراند دیگه چی نیازی به این همه زحمت و بفکر امنیت برنامه بودن هست ؟
تاپیک زیر رو مطالعه بفرمائید :
https://barnamenevis.org/showthread.php?561756-%D9%85%D8%AD%D8%A7%D9%81%D8%B6%D8%AA-%D8%A7%D8%B2%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%84-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D9%86%D8%B3%D8%AE%D9%87-%D9%87%D8%A7%DB%8C-MDE-%D9%88-ACCDE

nabeel
چهارشنبه 01 مرداد 1399, 10:35 صبح
سلام
هدف نهائی از قفل گذاری بر روی برنامه ها اینست که از تکثیر غیر مجاز آنها جلوگیری به عمل آوریم . وقتی نرم افزارهائی وجود دارن که براحتی کدهای برنامه را حتی بعد از کامپایل شدن برمیگراند دیگه چی نیازی به این همه زحمت و بفکر امنیت برنامه بودن هست ؟
تاپیک زیر رو مطالعه بفرمائید :
https://barnamenevis.org/showthread.php?561756-%D9%85%D8%AD%D8%A7%D9%81%D8%B6%D8%AA-%D8%A7%D8%B2%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%84-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D9%86%D8%B3%D8%AE%D9%87-%D9%87%D8%A7%DB%8C-MDE-%D9%88-ACCDE

سلام دوست من

قبلا در این خصوص مطالب زیادی در همین تالار درج کردم اونها رو مطالعه کنید ( در رابطه با همه مباحثی که دغذغه ذهنی شماست )

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

اگر اون مطالب رو مطالعه فرمودید در صورتی که سئوالی مازاد بر اون مطالب داشتید میتونم راهنماییتون کنم ( لینک اون مطلب رو هم قرار بدید )

موفق باشید

atf1379
چهارشنبه 01 مرداد 1399, 19:32 عصر
QUOTE=nabeel;2432864]سلام دوست من

قبلا در این خصوص مطالب زیادی در همین تالار درج کردم اونها رو مطالعه کنید ( در رابطه با همه مباحثی که دغذغه ذهنی شماست )

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

اگر اون مطالب رو مطالعه فرمودید در صورتی که سئوالی مازاد بر اون مطالب داشتید میتونم راهنماییتون کنم ( لینک اون مطلب رو هم قرار بدید )

موفق باشید[/QUOTE]


سلام جناب استاد پیروز مهر
باید عرض کنم بنده قبلاً تمام مباحث شما رو نه فقط در خصوص این موضوع بلکه در زمینه های مختلف با علاقه وافر دنبال و مطالعه کرده ام و اصلاً مگرامکان دارد که در این تالار کسی بدنبال یادگیری اکسس در حد حرفه ای باشد و ازکنار مباحث علمی و مهم شما بسادگی رد شود .واقعیت اینست که بنده در زمینه اکسس و برنامه نویسی در این محیط محبوب آنچنان تسلطی ندارم که در مواردی که بحث های تخصصی به میان می آید بتوانم درک درستی از مباحث داشته باشم . مثلاً همین توضیحاتی که در خصوص قفل نرم افزاری Trial Keeper Professiona در وب سایت شخصی خودتان ارائه داده این چندین بار مرور کرده ام ولی بواسطه تخصصی بودن بحث متوجه خیلی ازموارد نشدم ؛ یا همین جمله شما در این پست که فرموده ای دیدن کد مبحثی جدا از کرک نرم افزار هستش ( گو اینکه اولین قدم از همین جا شروع میشه ) این موردی که شما فرمودید در اکسس از اهمیت بالایی برخوردار نیست برای بنده قابل هضم نمی باشد وعلتش هم اینست که شاید بنده فقط از یک بعد به این مطلب نگاه کنم و آن اینکه برنامه نویس در برنامه خود از کدهای زیادی زیادی استفاده کرده و چه بسا برای تهیه بعضی از این کدها ماه ها و حتی سال های زیادی زمان صرف کرده باشد و اصلاً دوست نداشته باشد که روزی این کدها که برایش خیلی مهم است بدست کسی بیفتد، اگر درست متوجه شده باشم شاید منظور شما این باشد که کرک کردن یک نرم افزار حتماًو همیشه با مشاهده کدهای آن صورت نمی گیرد ولی عقل ناقص من به بنده میگوید که با دیدن کدها خیلی از اهدافی که برنامه نویس در نظر داشته فاش میشود. مثلاً فرض بفرمائید بنده جداول برنامه ام را از خود برنامه که فرم ها و گزارشات و دیگر آبجکت ها در آن را جدا کردم ام (مبحث Front End / Back End) و از طریق سیستم Ado از جداول استفاده کنم و برای بانک اطلاعاتی خود هم پسورد گذاشته باشم و در قسمت کد نویسی مربوط به کانکشن استرینگ برای برقرار ارتباط آن پسورد را نوشته ام ؛ حالا با وجود چنین نرم افزاری که کدهای نرم افزار را در معرض دید قرار میدهد بنده باید چه راهکاری بکار ببرم که پسورد بانک اطلاعاتی لو نرود؟

ضمناً جناب پیروز مهر از شما خواهش می کنم در صورت امکان قدری در خصوص این نرم افزار توضیح بدهین و بفرمائید آیا راهکاری برای دیده نشدن کدها توسط این نرم افزار و امثال این نرم افزار هست یا نه؟
با تشکر فراوان

nabeel
چهارشنبه 01 مرداد 1399, 21:38 عصر
در صورت امکان قدری در خصوص این نرم افزار توضیح بدهین و بفرمائید آیا راهکاری برای دیده نشدن کدها توسط این نرم افزار و امثال این نرم افزار هست یا نه؟


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

قبلا هم به شکلی دیگه عنوان کرده بودم که : خیر امکان جلوگیری از مشاهده کدها وجود نداره

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

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

در رابطه با مساله ای هم که عنوان فرمودید ( رمز کانکشن ) میتونید رمز رو به صورت رمز نگاری شده در ورودی قرار بدید

همونطوری که قبلا هم عنوان کردم , لازمه اون آشنایی با یک مفهوم ساده ولی در اجرا پیچیده هستش : Spaghetti code

همیشه توصیه میشه که کدینگ برنامه ها به صورت Structured Code یا ساختار مند نوشته بشن , به بیانی دیگه کدها دارای ساختاری مشخص , شفاف و قابل فهم و ردیابی باشند تا در آینده در صورت نیاز به اصلاح با مشکلات کمتری مواجه باشید

ولیکن در Spaghetti code بالعکس میبایست کدینگ بسیار پیچیده , دارای ارجاعات و پرشهای متعدد و به بیانی ساده تر قابلیت فهم و ردیابی ساده ای رو نداشته باشند ( تنها خود برنامه نویس باید بدونه چه کار کارده )

این نوع کدینگ علی القاعده در مباحث امنبتی کاربرد دارند .

باز هم خدمتتون عرض میکنم , زیاد خودتون رو درگیر این مباحث نکنید ( مشخص هستش که مباحث قبلی رو خوب مطالعه نکردید , هر نرم افزاری هدف کرک قرار نمی گیره دوست من )

موفق باشید

atf1379
چهارشنبه 01 مرداد 1399, 22:15 عصر
سلام با این نرم افزار کار نکردم و لیکن وجود اون برای شخص بنده اهمیتی نداره .

قبلا هم به شکلی دیگه عنوان کرده بودم که : خیر امکان جلوگیری از مشاهده کدها وجود نداره

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

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

در رابطه با مساله ای هم که عنوان فرمودید ( رمز کانکشن ) میتونید رمز رو به صورت رمز نگاری شده در ورودی قرار بدید

همونطوری که قبلا هم عنوان کردم , لازمه اون آشنایی با یک مفهوم ساده ولی در اجرا پیچیده هستش : Spaghetti code

همیشه توصیه میشه که کدینگ برنامه ها به صورت Structured Code یا ساختار مند نوشته بشن , به بیانی دیگه کدها دارای ساختاری مشخص , شفاف و قابل فهم و ردیابی باشند تا در آینده در صورت نیاز به اصلاح با مشکلات کمتری مواجه باشید

ولیکن در Spaghetti code بالعکس میبایست کدینگ بسیار پیچیده , دارای ارجاعات و پرشهای متعدد و به بیانی ساده تر قابلیت فهم و ردیابی ساده ای رو نداشته باشند ( تنها خود برنامه نویس باید بدونه چه کار کارده )

این نوع کدینگ علی القاعده در مباحث امنبتی کاربرد دارند .

باز هم خدمتتون عرض میکنم , زیاد خودتون رو درگیر این مباحث نکنید ( مشخص هستش که مباحث قبلی رو خوب مطالعه نکردید , هر نرم افزاری هدف کرک قرار نمی گیره دوست من )

موفق باشید


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

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

سپاسگزارم

atf1379
پنج شنبه 02 مرداد 1399, 07:07 صبح
در رابطه با مساله ای هم که عنوان فرمودید ( رمز کانکشن ) میتونید رمز رو به صورت رمز نگاری شده در ورودی قرار بدید


با سلام مجدد
با عرض پوزش ، خیلی سعی کردم بفهمم منظور جنابعالی از قسمت ورودی کجاست که رمز رو باید بصورت رمزنگاری آنجا قرار بدهم ولی انگار متوجه نشدم
عملیات ذهنی بنده که منتج به نتیجه نگردید :
بفرض رمز عبور بانک اطلاعاتی برنامه ام عبارت hg123 میباشد .
رمز فوق را از طریق تابعی مثلاً بصورت 98fdc9zxrp50gh تبدیل و در فیلدی از یک جدول در برنامه اجرائی قرار داده ام
حالا در آخر در کدمربوط به کانکشن استرینک که مثلاً بصورت زیراست:


1
2
3
4
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Jet OLEDB:Database Password=MyDbPassword;


باید ابتدا رمز خود را که بصورت کد شده تبدیل کرده ام فراخوانی و در یک متغیر رشته ای قرار بدهم و از طریق تابعی دیگر آن را دیکد کرده و سپس آن را در متغیر MyDbPassword قرار بدهم
دغدغه بنده همینجاست که نرم افزار فوق که کارش نمایش و در معرض دید قرار دادن کدهای برنامه است آن تابع و آن متغیر مربوط به رمز کد شده را نمایش میدهد و کرکر همینجا دست بکار میشود و بدون استفاده از مهندسی معکوس با دیدن تابع فوق و عبارت کد شده متوجه رمز عبور واقعی می گردد .
من نمیدانم که چنین نرم افزارهائی قادر به مشاهده عبارت داخل یک تکست باکس هم هستن یا خیر ؟ تصور بنده اینستکه اگر نوشته داخل تکست باکس قابل مشاهده نباشه بهترین مکان برای ثبت رمز کد شده همینجاست چراکه در اینحالت دیگر عبارت رمز برای قرار دادن در تابع وبدست آوردن رمز واقعی قابل مشاهده نمی باشد .

eb_1345
پنج شنبه 02 مرداد 1399, 21:12 عصر
سلام
بنده هم تا حالا با این نرم افزار و نرم افزارهای مشابه کار نکرده ام ولی بنظر میرسد اگر هر کدام از حروف رمز را بین جفت کوتیشن قرار بدهی و با علامت «&» امپرسند (Ampersand) آنها را بهم وصل نمائید احتمال تشخیص آن مشکل به نظر برسد .
مثلاً کلمه رمز hg123 بصورت زیر در متغیر MyDbPassword قرار بده !



MyDbPassword = "h" & "g" & "1" & "2" & "3"





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

این روش معقولی بنظر نمیرسد



یا علی

atf1379
شنبه 04 مرداد 1399, 11:31 صبح
جسارتاً پیامی بطور خصوصی برای استاد ارسال کردم

narpco
شنبه 04 مرداد 1399, 18:11 عصر
دوستان عزیز و گرامی و اساتید محترم بسیار ممنونم از اینکه وقت میزارید و پاسخگوی دوستان هستید
بنده چیزی نگفتم تا سئوالات دوستان پاسخ داده بشه
احساس بنده اینه که بحث داره به انحراف کشیده میشه و سئوالات و پاسخ داره به سمت موضوع دیگری کشیده میشه مرور چند نکته از ابتدا تا به اینجا در مورد سئوال بنده ضروری به نظر میرسه که گویا دوستان خیلی توجه نفرمودن
1- برنامه دارای فرم رجیستر حرفه است اطلاعات سخت افزاری رو کامل استخراج می کنه و + یکسری محاسبات ریاضی کد خاصی رو جهت اجرای برنامه در خود ذخیره می کنه و روی رایانه دیگه به هیچ عنوان قابل اجرا نیست .
2-فرم ثبت اطلاعات شرکت فقط در دسترس برنامه نویس بوده و پس از ذخیره کسی نمیتواند اطلاعات شرکت را ویرایش کند و این اطلاعات بالای همه گزارشات درج میشود و به هیچ عنوان نمیشه تغییرشون داد
3-تنها مشکل اینجاست که بعد از همه موارد ایمنی ...عقل ایجاب میکنه که وقتی نام یک شرکت دیگه بالای گزارشات درج میشه برنامه رو کپی نکنیم چون در نهایت فایده ای نداره و روی گزارشات نام شرکت دیگه ای چاپ میشه ...
اما....
شاید باورتون نشه که کاربر برنامه رو کپی کرده کار یک شرکت دیگه رو با اون برنامه انجام داده و گزارشات رو پرینت کرده ....با لاک غلط گیر نام پرینتی شرکت قبلی رو پاک کرده و با ماژیک یا خودکار نام شرکت جدید رو نوشته !!!!!
البته چون روی گزارشات برنامه ما بصورت کمرنگ در وسط گزارش نام شرکت خریدار برنامه درج میشه ..طرف زود لو رفته .......

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

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

هدف ما خیلی ساده بیان میشه ......اجرا فایل اجرایی کپی شده برنامه امکان پذیر نباشه .....

بسیار مشتاق راهنمایی اساتید هستم .....با سپاس از همه دوستان که در این بحث شرکت میکنن .....:تشویق::تشویق::تشویق::تشوی ق:




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


نمیدونم حالا کد وی بی این رو چطوری باید نوشت..................!!!!:ناراحت::نا احت::ناراحت::ناراحت:

eb_1345
شنبه 04 مرداد 1399, 22:19 عصر
الان سنارویی به ذهنم رسید با شما در میون میزارم ....
یک منطق صفر و یک در کامپیوتر وجود داره .......از هر فایلی در هر مسیری فقط یک عدد میتونه وجود داشته باشه پس
اگر فایل در حال اجرا در مسیر e:\aaa بود برنامه اجرا بشه ...اگر نبود برنامه بسته بشه ....نکته مهم : فایل درحال اجرا ......یعنی فایلی که بازه داره خودش رو کنترل میکنه
در این صورت اگر فایل در مسیر مورد نظر ما قرار داشته باشه که خوب برنامه قانونی هست و داره اجرا میشه
اما اگر فایل در حال اجرا در مسیر ما نباشه ....پس قطعا کپی شده.....


نمیدونم حالا کد وی بی این رو چطوری باید نوشت..................!!!!:ناراحت::نا احت::ناراحت::ناراحت:

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


Dim strpath As String
strpath = "E:\Exefile\test.accde"
If Access.CurrentProject.Path & "\test.accde" = strpath Then
Else
DoCmd.Quit
End If


در این کد فرض شده برنامه اجرائی شما بنام test.accde در پوشه ای بنام Exefile و در درایو E قرار دارد
طبق این کد چک میشود که اگر مسیر جاری این فایل اجرائی با مسیر فایل در درایو eیکی نبود برنامه بسته بشود .
فقط عنایت داشته باش که ممکنه کامپیوتر کاربر فاقد درایوی با نام E باشد

البته بهتر است که اجرای برنامه صرفاً محدود و وابسته در یک درایو خاص که در برنامه مشخص شده نباشد و در سایر درایوها ( به استثناء درایو C و زیر شاخه های مربوطه که موضوع جستجوی فایل در آن زمانبر است ) قابل اجرا باشد . برای این منظور هم باید لیست درایوها را بدست آورد و در یک حلقه بین درایوها به استثناء درایو C و A چک شود که چند تا فولدر مثلاً بنام FolderExe و فایل اجرائی بنام fileExe.accde وجود دارد . اگر تعداد بیشتر از یک بود برنامه با پیغام وجود نسخه کپی شده در مسیری دیگر بسته شود .

بدیهی است این جستجو و بررسی زیاد سنگین و زمانبر نیست چون هم تعداد درایوها (به استثناء درایو C و A) مشخص و محدودند و هم تعداد و نام فولدر و فایل اجرائی

ضمناً :
بفرض اینکه این سناریو هم قابل اجرا باشد که حتماً هم هست و فایل اجرائی فقط دریک نسخه قابل اجرا باشد و از آنجائیکه برنامه در حالت Front End / Back End (جدا کردن اینترفیس برنامه از اطلاعات) طراحی شده بانک اطلاعاتی برنامه میتواند در هرمسیری یا یک مسیر مشخص و ثابت قرار بگیرد . با این وجود هم کاربر باز میتواند با همون یک نسخه اجرائی هدف خودش را اجراکند چون نام شرکت برایش مهم نیست وبقول شما با لاک غلط گیر نام پرینتی شرکت قبلی رو پاک کرده و با ماژیک یا خودکار نام شرکت جدید رو مینویسه .


موفق باشی

eb_1345
دوشنبه 06 مرداد 1399, 15:31 عصر
البته بهتر است که اجرای برنامه صرفاً محدود و وابسته در یک درایو خاص که در برنامه مشخص شده نباشد و در سایر درایوها ( به استثناء درایو C و زیر شاخه های مربوطه که موضوع جستجوی فایل در آن زمانبر است ) قابل اجرا باشد . برای این منظور هم باید لیست درایوها را بدست آورد و در یک حلقه بین درایوها به استثناء درایو C و A چک شود که چند تا فولدر مثلاً بنام FolderExe و فایل اجرائی بنام fileExe.accde وجود دارد . اگر تعداد بیشتر از یک بود برنامه با پیغام وجود نسخه کپی شده در مسیری دیگر بسته شود .

بدیهی است این جستجو و بررسی زیاد سنگین و زمانبر نیست چون هم تعداد درایوها (به استثناء درایو C و A) مشخص و محدودند و هم تعداد و نام فولدر و فایل اجرائی


سلام
فایل نمونه ای تهیه شد که فعلاً نسخه accde اون رو در ضمیمه قرار داده ا م
این فایل ( پوشه و فایل اجرائی داخل اون ) رو در درایو های مختلف و در حلات زیر اجرا و امتحان کنین!
1- در درایو C و زیر شاخه های اون مثل دستکتاپ ، مای داکیومنت و ... اجرا کنین .
2- از اون کپی بگیرین و در درایو دیگر قرار بدهین و نسخه کپی شده رو اجرا نمائین
3- اقدام به تغییر نام فایل اجرائی یا پوشه مربوطه کنین و سپس اون رو اجرا نمائین
یا علی

narpco
پنج شنبه 09 مرداد 1399, 20:13 عصر
سلام برادر روزتون بخیر
eb_1345 (https://barnamenevis.org/member.php?424036-eb_1345)

https://barnamenevis.org/images/statusicon/user-offline.png

من دستور شما رو انجام دادم و اگر درست فهمیده باشم اگر فایل و فولد در مسیری غیر از درایو E باشد برنامه اجرا نمی شود و همچنین اگر فولد برنامه در جایی دیگر کپی شده باشد کار نمی کند و اگر نام فایل یا فولدر را عوض کنند هم باز برنامه اجرا نمی شود
اگر درست فهمیدم که بفرمایید ........اگر هم نه که اصلاح بفرمایید

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

فکر می کنم اگر خود شما این سناریو رو توضیح بدین بیشتر باعث فهم بنده خواهد شد که فایل چگونه عمل می کنه

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

نکته مهم اینه که برنامه ما حالت نصبینداره و روی درایو e کپی میشه و تا حالا موردی نداشتیم که سیتمی درایو E نداشته باشه چون برنامه برای شرکت های حرفه ای با سیستم های بروز طراحی شده و حتما درایو e دارن
پس فکر کنم نیازی نیست حتی درایو c درایو مجاز برای اجرای برنامه باشه
فکر می کنم اگر بجز یک مسیر ثابت در یک درایو خاص مسیری دیگر و درایوی دیگر مجاز بشه باز احتمال کلاه برداری هست .....
با سپاس



علی یارتون باشه ....

eb_1345
جمعه 10 مرداد 1399, 01:04 صبح
فکر می کنم اگر بجز یک مسیر ثابت در یک درایو خاص مسیری دیگر و درایوی دیگر مجاز بشه باز احتمال کلاه برداری هست .....


سلام
نسخه accdb فقط بااجرا در درایو E درضمیمه قرار داده شد

narpco
جمعه 10 مرداد 1399, 13:27 عصر
سلام
نسخه accdb فقط بااجرا در درایو E درضمیمه قرار داده شد .


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

narpco
جمعه 10 مرداد 1399, 13:48 عصر
دوست بزرگوار من این فایل رو تست کردم همه چیز درست کار می کنه بجز یک مورد ....
اگر همین فولدر را کپی کنیم و داخل همین فولد past کنیم باز هم برنامه اجرا می شود
یعنی اگر از روی فولد برنامه کپی کنیم و داخل خودش past کنیم ...حالا هر تعداد که لازم داشته باشیم تو درتو عمل می کنیم .....بازم اجرا میشه....... بسیار ممنون میشم راهنمایی بفرمایید.
E:\FolderExe\FolderExe\file.accde


عکیس را مشاهده بفرمایید از لینک زیر
http://s12.picofile.com/file/8404416900/564654656546.jpg

eb_1345
جمعه 10 مرداد 1399, 15:13 عصر
دوست بزرگوار من این فایل رو تست کردم همه چیز درست کار می کنه بجز یک مورد ....
اگر همین فولدر را کپی کنیم و داخل همین فولد past کنیم باز هم برنامه اجرا می شود
یعنی اگر از روی فولد برنامه کپی کنیم و داخل خودش past کنیم ...حالا هر تعداد که لازم داشته باشیم تو درتو عمل می کنیم .....بازم اجرا میشه....... بسیار ممنون میشم راهنمایی بفرمایید.
E:\FolderExe\FolderExe\file.accde


عکیس را مشاهده بفرمایید از لینک زیر
http://s12.picofile.com/file/8404416900/564654656546.jpg


بله ، درسته ! به این مورد دقت نکرده بودم
فایل اصلاح شده در همون پست قبلی رو مجدداً دانلود و امتحان کن ببین درست شده

narpco
جمعه 10 مرداد 1399, 19:21 عصر
بله ، درسته ! به این مورد دقت نکرده بودم
فایل اصلاح شده در همون پست قبلی رو مجدداً دانلود و امتحان کن ببین درست شده




عالی برادر ..خسته نباشی ..عالی کار می کنه .......کارت درسته .....بسیار ممنونم ...:تشویق::تشویق::تشویق::تشویق ::تشویق::تشویق::تشویق::تشویق:: تشویق::تشویق::تشویق::تشویق:
ممنون میشم فایل (.accdb)رو محبت بفرمایید...و اگر توضیحی هست بنده دو زانو نشستم برای شنیدن ....

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

eb_1345
جمعه 10 مرداد 1399, 21:58 عصر
ممنون میشم فایل (.accdb)رو محبت بفرمایید...و اگر توضیحی هست بنده دو زانو نشستم برای شنیدن ....


سلام
همون فایلی که در فولدر مربوطه هست نسخه فایل accdb است. من فقط حرف آخر اون رو از b به e تغییر داده ام ، و اگر در حین اجرا شیفت رو نگه داری میتونی وارد محیط برنامه وکد نویسی اون بشی.

[QUOTE=narpco;2433130]

narpco
شنبه 11 مرداد 1399, 12:04 عصر
سلام بسیار عالی و بازم ممنونم زحمات شما هستم ......حل این چالش به یادگار در این سایت بماند :تشویق::تشویق::تشویق:..چرا که تنها شما توانستین بصورت عملی و دقیق مشکل رو حل کنید
و خیلی از دوستانی که مدعی داشتن مدرک از فلان جا و فلان مرکز بین المللی داشتن ..نتونستن مشکل رو حل کنن.....اینکه میگم نتونستن واقعا نتونستن ها ..اغراق نمی کنم
به هر حال بنده قلبا ٌ سپاسگزارم ..بخاطر حس مسئولیت و تعهد اخلاقی
در یکی از پست ها عزیزی به اخلاق مهندسی اشاره کردن ....
میخواستم بگم اخلاق مهندسی یعنی همین ....عرض ارادت ما را پذیرا باشید ....ناصریان ...مرداد 99

nabeel
شنبه 11 مرداد 1399, 14:57 عصر
narpco ( ناصریان ) عزیز

با توجه به صورت مساله شما , مشکل راه حلی درون ساختی نداره ( لاک گرفتن رو عرض میکنم )



نتونستن مشکل رو حل کنن.....اینکه میگم نتونستن واقعا نتونستن ها ..اغراق نمی کنم

مگه الان مشکل حل شده ؟

فکر نمیکنم مشکل حل شده باشه .

موفق باشید

eb_1345
شنبه 11 مرداد 1399, 15:21 عصر
سلام بسیار عالی و بازم ممنونم زحمات شما هستم ......حل این چالش به یادگار در این سایت بماند :تشویق::تشویق::تشویق:..چرا که تنها شما توانستین بصورت عملی و دقیق مشکل رو حل کنید
و خیلی از دوستانی که مدعی داشتن مدرک از فلان جا و فلان مرکز بین المللی داشتن ..نتونستن مشکل رو حل کنن.....اینکه میگم نتونستن واقعا نتونستن ها ..اغراق نمی کنم
به هر حال بنده قلبا ٌ سپاسگزارم ..بخاطر حس مسئولیت و تعهد اخلاقی
در یکی از پست ها عزیزی به اخلاق مهندسی اشاره کردن ....
میخواستم بگم اخلاق مهندسی یعنی همین ....عرض ارادت ما را پذیرا باشید ....ناصریان ...مرداد 99

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

narpco
شنبه 11 مرداد 1399, 18:15 عصر
دوست گرامی
nabeel (https://barnamenevis.org/member.php?85795-nabeel)

https://barnamenevis.org/images/statusicon/user-offline.png عزیز ....فرموده شما صحیح است ....اما ما با ترفند دیگری مشکل رو حل کردیم ....مهم ترین مشکل ما اجرا نشدن فایل کپی شده بود که به لطف دوست عزیزمون حل شد.




و اما eb_1345 (https://barnamenevis.org/member.php?424036-eb_1345)
عزیز ....فرموده شما هم صحیح است .... بنده با 43 سال سن و تجربیات به قطع زیاد در ارتباط با متخصصین مختلف به دلیل شغلم عرض می کنم که ...

پاسخ ندادن به یک درخواست 5 حالت داره

:

1- به من چه ......بدوه دنبالش تا پیدا کنه من چرا جواب بدم
2- چرا مجانی انجام بدم
3- نمیتونم انجام بدم ....
4-منم در چالش شرکت می کنم نظر میدم و بصورت تیمی حلش می کنیم و بقولی یا راهی خواهیم یافت یا راهی خواهیم ساخت ....
5-کارمهم تری دارم الان....

در هر 5 حالت ما مخلص اساتید هم هستیم که حداقل از بنده با سواد ترن ....البته در زمینه برنامه نویسی عرض می کنم ...ما حتی اعلام کردیم اگر هزینه ای هم داره تقدیم میکنیم در حد توانمون ....ولی بازهم کسی درگیر حل مسئله نشد !! و من در مقامی نیستم که قضاوت کنم که چرا ؟!؟!؟! نشد. چرا که اون موقع سوئ تعبیر میشه که ما توقع بیجا داریم ..که قطعا همچین چیزی نیست....انتخاب هر کسی بخودش مربوطه و قابل احترام ....

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

حالا ما خودمون در مقام قضاوت خودمون هستیم که بدونیم ....راه حل هستیم ..یا جزئی از مشکل ....

از نظر من مشکلات همیشه در حد تغییر رنگ یک تکست باکس و یا چطوری ایکون اکسس رو عوض کنیم نیست که اینا رو با سرچ ساده در منابع فارسی و انگلیسی میشه خوبش رو پیدا کرد.............اما وقتی شما درگیر پروژه واقعی میشی و کار کردن این برنامه برات حیاتیه و 6 ماه وقتت رو روش گذاشتی که تست بشه و پاسخ بده دیگه..اون وقت با مشکلاتی بر میخوری که شاید واقعا جوابش به این سادگی ها پیدا نشه و شاید برای شخص دیگری سئوال نشده باشه و یا سئوال باشه ولی چون کسی جوابش رو نداده بیخیال قصه شده ...

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


درهمین سایت و در همین عنوان اکسس ببینید وقتی سئوالی مطرح میشه 5 نفر اول که پاسخ دادند چه کسانی هستند.....و آخرین پست رو هم تو اون بحث ببینید که چی کسی بحث رو تمام کرده و مشکل رو حل کرده ...همه این عزیزان در حل اون مشکل سهیم هستن ....چون نیت کمک به حل مشکل بوده هرچند ناچیز .....

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


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

در مورد این میحث هم اگر اساتید نظر بهتری دارن ..ما با گوش جان میشنویم.......موفق باشید ....

atf1379
شنبه 11 مرداد 1399, 20:58 عصر
سلام
یک سوال از اساتید بزرگوار که بی ارتباط با موضوع این تاپیک نیست دارم و آن اینکه اگر نرم افزاری که دارای فایل بانک اطلاعاتی جدا از فایل اجرائی میباشد و آن بانک اطلاعاتی دارای رمز عبور باشد دادن رمز عبور به خریدار حتماً الزام قانونی دارد یا میتواند توافقی باشد ؟
با تشکر

mazoolagh
دوشنبه 31 شهریور 1399, 11:40 صبح
دو مورد هست که دوباره یادآوری میکنم چون مطالب نادرستی اینجا مطرح شده و ممکنه برای کسانی این شبهه پیش بیاد که واقعا اینکار شدنی هست!

1- مطلقا هیچ راهی نیست که نشه نسخه های متفاوت از یک برنامه اکسس (حتی با fe-be) رو روی یک هارد نگه داشت و هر نسخه رو در زمان نیاز اجرا کرد، حتی با یک بچ اسکریپت ساده میشه فرآیند رو اتوماتیک کرد.
این موردی هست که هر کسی کوچکترین آشنایی با فایل سیستم داشته باشه میدونه و حتی بهش هم فکر نمیکنه - البته برای کسانی که این دانش ابتدایی رو ندارن این توهم ممکنه پیش بیاد که راهی پیدا کردن ولی اعتبار راه تا جایی هست که مشتری از خودشون کم سوادتر باشه.

2- موضوع اخلاق مهندسی (و وجدان کاری) خیلی مهم هست و اگر برنامه ای رفتار غیرمتعارف داره باید حتما خریدار آگاه باشه - بطور کلی امکانات و محدودیتها باید مشخص باشه.

mazoolagh
دوشنبه 31 شهریور 1399, 11:55 صبح
سلام
یک سوال از اساتید بزرگوار که بی ارتباط با موضوع این تاپیک نیست دارم و آن اینکه اگر نرم افزاری که دارای فایل بانک اطلاعاتی جدا از فایل اجرائی میباشد و آن بانک اطلاعاتی دارای رمز عبور باشد دادن رمز عبور به خریدار حتماً الزام قانونی دارد یا میتواند توافقی باشد ؟
با تشکر

تا اساتید بیان و جواب بدن:

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

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

narpco
دوشنبه 31 شهریور 1399, 17:53 عصر
دو مورد هست که دوباره یادآوری میکنم چون مطالب نادرستی اینجا مطرح شده و ممکنه برای کسانی این شبهه پیش بیاد که واقعا اینکار شدنی هست!

1- مطلقا هیچ راهی نیست که نشه نسخه های متفاوت از یک برنامه اکسس (حتی با fe-be) رو روی یک هارد نگه داشت و هر نسخه رو در زمان نیاز اجرا کرد، حتی با یک بچ اسکریپت ساده میشه فرآیند رو اتوماتیک کرد.
این موردی هست که هر کسی کوچکترین آشنایی با فایل سیستم داشته باشه میدونه و حتی بهش هم فکر نمیکنه - البته برای کسانی که این دانش ابتدایی رو ندارن این توهم ممکنه پیش بیاد که راهی پیدا کردن ولی اعتبار راه تا جایی هست که مشتری از خودشون کم سوادتر باشه.

2- موضوع اخلاق مهندسی (و وجدان کاری) خیلی مهم هست و اگر برنامه ای رفتار غیرمتعارف داره باید حتما خریدار آگاه باشه - بطور کلی امکانات و محدودیتها باید مشخص باشه.
*********************************************
جناب روز بخیر
یه موضوعی برای من خیلی سئوال شد با این فرمایش شما .....
اگر درست فهمیده باشم البته ....مورد 1----یعنی شما میفرمایید وقتی یک برنامه ای که با اکسس ساخته شده رو روی یک سیستم نصب می کنیم هیچ راهی برای کپی کردن و استفاده کردنش در همون سیستم وجود نداره ؟ حتی با تغییر نام ؟
منظور حضرتعالی همینه ؟

یا منظور شما اینه که هر کاری هم انجام بدیم بازم براحتی کپی میشه ؟

narpco
دوشنبه 31 شهریور 1399, 18:03 عصر
تا اساتید بیان و جواب بدن:

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

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

*************************************************
و بازهم سلام ....
و یک سئوال ..البته نظرات و اخلاقیات شما برای من جالب وکاملا قابل احترام هست البته اگر در جامعه فرهنگ سازی بشه ..اما....
1- آیا شما برای نرم افزار هایی که خودتون تولید می کنید همین کارا رو انجام میدین ؟
2-اگر نرم افزار تجاری ساخته شده باشه و بصورت سی دی در بازار فروخته بشه بازم این فرایندی که میفرمایید صحت عمل داره ؟
3-کسی تا حالا شده از بازار نرم افزار مثلا حسابداری بخره و شرکت تولید کننده رمز دیتا بیس رو تو سی قرار داده باشه ؟ مثلا فکر کنید شرکت همکاران سیستم یک نرم افزار میفروشه 40 میلیون تومن و به نظر شما میاد و رمز دیتا بیس رو به ما میده واقعا ؟

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

همه اینا رو پرسیدم که به جواب یک سئوال برسم آیا تولید کنندگان نرم افزار تا حالا داشتن سر ملت شیره میمالیدن ؟

هفته پیش شرکت منطق برای یک شرکتی که توکن برنامش خراب شده بود یک میلیون گرفت توکن مجدد داد ......بعنوان قفل سخت افزاری که بصورت منطقی قطعه فیزیکی است برای صحت اعتبار خریدار و ارتباط بین feو Be .......و تاجایی که من تحقیق کردم توکن اگر خراب بشه با 20 هزار تومن عوض میشه نه یک ملیون تومن

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

و نکته اخر اینکه وقتی برنامه در محیطی کاملا امنیتی داره کار می کنه و اطلاعات ثبت شده داخل دیتا بیس بحث امنیتی داره بازم باید همه رمز ها رو تقدیم کنیم به خریدار ؟

mazoolagh
چهارشنبه 02 مهر 1399, 13:32 عصر
*********************************************
جناب روز بخیر
یه موضوعی برای من خیلی سئوال شد با این فرمایش شما .....
اگر درست فهمیده باشم البته ....مورد 1----یعنی شما میفرمایید وقتی یک برنامه ای که با اکسس ساخته شده رو روی یک سیستم نصب می کنیم هیچ راهی برای کپی کردن و استفاده کردنش در همون سیستم وجود نداره ؟ حتی با تغییر نام ؟
منظور حضرتعالی همینه ؟

یا منظور شما اینه که هر کاری هم انجام بدیم بازم براحتی کپی میشه ؟



روز شما هم خوش
منظور این هست که روش های مبتنی بر فایل سیستم کلا محکوم به شکست هست.
من همون ابتدای تاپیک گفتم که یک روش مؤثر هاردکد کردن اسم و مشخصات مشتری در سربرگ (یا واترمارک) خروجی هاست، این هم به شرطی هست که این خروجی ها در خارج از مجموعه نیاز باشه (مثلا فاکتور یا کارنامه و گزارش پزشک و ...) .
حالا اگر خروجی ها فایل باشن (بیمه و ...) که توسط خریدار قابل ویرایش هست این هم فایده ای نداره.

باید به روش های دیگه ای فکر کنین - به این صورت که بخشی از دیتا حیاتی (یا دیتا کنترلی) رو در جایی غیر از برنامه و یا دیتابیس ذخیره کنین (و باز هم نه در فایل) .

mazoolagh
چهارشنبه 02 مهر 1399, 13:42 عصر
*************************************************
و بازهم سلام ....
و یک سئوال ..البته نظرات و اخلاقیات شما برای من جالب وکاملا قابل احترام هست البته اگر در جامعه فرهنگ سازی بشه ..اما....
1- آیا شما برای نرم افزار هایی که خودتون تولید می کنید همین کارا رو انجام میدین ؟
2-اگر نرم افزار تجاری ساخته شده باشه و بصورت سی دی در بازار فروخته بشه بازم این فرایندی که میفرمایید صحت عمل داره ؟
3-کسی تا حالا شده از بازار نرم افزار مثلا حسابداری بخره و شرکت تولید کننده رمز دیتا بیس رو تو سی قرار داده باشه ؟ مثلا فکر کنید شرکت همکاران سیستم یک نرم افزار میفروشه 40 میلیون تومن و به نظر شما میاد و رمز دیتا بیس رو به ما میده واقعا ؟

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

همه اینا رو پرسیدم که به جواب یک سئوال برسم آیا تولید کنندگان نرم افزار تا حالا داشتن سر ملت شیره میمالیدن ؟

هفته پیش شرکت منطق برای یک شرکتی که توکن برنامش خراب شده بود یک میلیون گرفت توکن مجدد داد ......بعنوان قفل سخت افزاری که بصورت منطقی قطعه فیزیکی است برای صحت اعتبار خریدار و ارتباط بین feو Be .......و تاجایی که من تحقیق کردم توکن اگر خراب بشه با 20 هزار تومن عوض میشه نه یک ملیون تومن

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

و نکته اخر اینکه وقتی برنامه در محیطی کاملا امنیتی داره کار می کنه و اطلاعات ثبت شده داخل دیتا بیس بحث امنیتی داره بازم باید همه رمز ها رو تقدیم کنیم به خریدار ؟





سلام مجدد
لطفا یک تاپیک مستقل و با عنوان مناسب برای این موضوع ایجاد کنید تا دوستان بیشتری درگیر بشن.
تا اون موقع در جریان باشین که از بابت قفل نبودن دیتابیس (دست کم در مورد شرکت همکاران سیستم و چند شرکت مشابه دیگه)، به شما اطمینان میدم هیچکدومشون جلوی دسترسی خریدار به دیتابیس رو نمیگیرن.
در واقع تامین امنیت دیتابیس رو بعهده خریدار گذاشتن (امنیت شبکه و sql سرور) و خودشون رو درگیر این مسائل نمیکنن.

atf1379
جمعه 04 مهر 1399, 14:10 عصر
دو مورد هست که دوباره یادآوری میکنم چون مطالب نادرستی اینجا مطرح شده و ممکنه برای کسانی این شبهه پیش بیاد که واقعا اینکار شدنی هست!

1- مطلقا هیچ راهی نیست که نشه نسخه های متفاوت از یک برنامه اکسس (حتی با fe-be) رو روی یک هارد نگه داشت و هر نسخه رو در زمان نیاز اجرا کرد، حتی با یک بچ اسکریپت ساده میشه فرآیند رو اتوماتیک کرد.
این موردی هست که هر کسی کوچکترین آشنایی با فایل سیستم داشته باشه میدونه و حتی بهش هم فکر نمیکنه - البته برای کسانی که این دانش ابتدایی رو ندارن این توهم ممکنه پیش بیاد که راهی پیدا کردن ولی اعتبار راه تا جایی هست که مشتری از خودشون کم سوادتر باشه.

2- موضوع اخلاق مهندسی (و وجدان کاری) خیلی مهم هست و اگر برنامه ای رفتار غیرمتعارف داره باید حتما خریدار آگاه باشه - بطور کلی امکانات و محدودیتها باید مشخص باشه.




منظور این هست که روش های مبتنی بر فایل سیستم کلا محکوم به شکست هست.
من همون ابتدای تاپیک گفتم که یک روش مؤثر هاردکد کردن اسم و مشخصات مشتری در سربرگ (یا واترمارک) خروجی هاست، این هم به شرطی هست که این خروجی ها در خارج از مجموعه نیاز باشه (مثلا فاکتور یا کارنامه و گزارش پزشک و ...) .
حالا اگر خروجی ها فایل باشن (بیمه و ...) که توسط خریدار قابل ویرایش هست این هم فایده ای نداره.

باید به روش های دیگه ای فکر کنین - به این صورت که بخشی از دیتا حیاتی (یا دیتا کنترلی) رو در جایی غیر از برنامه و یا دیتابیس ذخیره کنین (و باز هم نه در فایل) .

سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
به نکاتی تخصصی در پست های 48 و 52 این تاپیک اشاره کرده این که قطعاً برای من و بعضی از عزیزان دیگه قابل هضم نمی باشد

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

1-منظور از fe-be چیست ؟ آیا منظور همان حالت Front End / Back End است یا چیز دیگه ؟

2- مطلقا هیچ راهی نیست که نشه نسخه های متفاوت از یک برنامه اکسس (حتی با fe-be) رو روی یک هارد نگه داشت و هر نسخه رو در زمان نیاز اجرا کرد، حتی با یک بچ اسکریپت ساده میشه فرآیند رو اتوماتیک کرد.

3- روش های مبتنی بر فایل سیستم کلا محکوم به شکست هست

با تشکر

mazoolagh
شنبه 05 مهر 1399, 14:36 عصر
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
به نکاتی تخصصی در پست های 48 و 52 این تاپیک اشاره کرده این که قطعاً برای من و بعضی از عزیزان دیگه قابل هضم نمی باشد

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

1-منظور از fe-be چیست ؟ آیا منظور همان حالت Front End / Back End است یا چیز دیگه ؟

2- مطلقا هیچ راهی نیست که نشه نسخه های متفاوت از یک برنامه اکسس (حتی با fe-be) رو روی یک هارد نگه داشت و هر نسخه رو در زمان نیاز اجرا کرد، حتی با یک بچ اسکریپت ساده میشه فرآیند رو اتوماتیک کرد.

3- روش های مبتنی بر فایل سیستم کلا محکوم به شکست هست

با تشکر

سلام و روز خوش

1- بله، منظور همون هست که اشاره کردین.
2- منظور این هست که میشه عملیات تغییر نام فایل ها و ... در یک batch file (که مجموعه ای از دستورات DOS هست که پشت سر هم و خودکار اجرا میشن) ریخت و حتی پارامتر هم بهش داد.
فرضا اگر یک نسخه برنامه برای شرکت a و نسخه دیگه برای شرکت b هست، میتونیم اسم این دو شرکت رو بعنوان پارامتر به بچ فایل پاس کنیم و تغییر نام فایلها و ... با توجه به این پارامتر انجام بشن.
3- منظور این هست که خواسته استارتر تاپیک با روشهایی که اینجا اومده شدنی نیست.

narpco
شنبه 05 مهر 1399, 15:21 عصر
سلام و روز خوش

1- بله، منظور همون هست که اشاره کردین.
2- منظور این هست که میشه عملیات تغییر نام فایل ها و ... در یک batch file (که مجموعه ای از دستورات DOS هست که پشت سر هم و خودکار اجرا میشن) ریخت و حتی پارامتر هم بهش داد.
فرضا اگر یک نسخه برنامه برای شرکت a و نسخه دیگه برای شرکت b هست، میتونیم اسم این دو شرکت رو بعنوان پارامتر به بچ فایل پاس کنیم و تغییر نام فایلها و ... با توجه به این پارامتر انجام بشن.
3- منظور این هست که خواسته استارتر تاپیک با روشهایی که اینجا اومده شدنی نیست.
************************************************** ******************************

به لحاظ منطق ریاضی کامپیوتر حرف شما کاملا صحیح است

سئوالی که مطرح میشه و برای من هم بحث جالبی شده با توجه به تجربه و مهارت شما
چه راه حلی رو پیشنهاد میفرمایید که ما از این دردسر خلاص شیم

اگر امکانش باشه فایل مثال و نمونه ای هم برای فهم بیشتر موضوع بفرستین که عالی میشه ....


*** این موضوع واقعا موضوع شوخی برداری نیست .....یک برنامه تولیدی بین 6 ماه تا یکسال وقت ادم رو میگیره حالا اگر به مشکل غیر قابل حلی برنخوریم .....اینه که امنیت برنامه واقعا موضوع مهمی است
سواد بنده به شخصه در حد آموزش هایی است که در تمام این سالها در نت و کتاب ها موجود بوده که بحث امنیت تنها در حد رمز گذاری روی فایل ها و محیط وی بی و جدا کردن be-fe هست نهایتا یک فرم لاگین مجزا و کنترل سخت افزاری موقع بالا اومدن برنامه ---در سورس های خارجی هم خیلی بیشتر از این چیزی من پیدا نکردم ....



با سپاس از شما ....

mazoolagh
پنج شنبه 10 مهر 1399, 12:28 عصر
************************************************** ******************************
چه راه حلی رو پیشنهاد میفرمایید که ما از این دردسر خلاص شیم


یک سناریو امتحان شده این هست که به جای درگیر کردن خودمون با کاربر و سیستمش، از دیتا کنترلی استفاده کنیم.

منظور از دیتا کنترلی، یک یا چند مقدار بر اساس دیتا هست که کاربر وارد دیتابیس میکنه.
فرضا یک سیستم حسابداری داریم، دیتا کنترلی میتونه یک رکورد شامل فیلدهای زیر باشه:
- مشخصات خریدار
- تعداد سرفصل های کل
- تعداد سرفصل های معین
- تعداد سرفصل های تفصیلی
- تعداد اسناد ثبت شده
- تعداد کل رکوردها

زمانی که برنامه برای اولین بار روی سیستم مشتری اجرا میشه، دنبال این مقادیر میگرده (فعلا به اینکه کجا باید باشه کاری نداریم) و چون مقدار همه این ها 0 هست (یا اینکه اصلا وجود نداره) و در ضمن دیتابیس هم خالی هست، پس برنامه فرض رو بر مجاز بودن برنامه و دیتا میگذاره و اجازه ادامه کار رو میده.
با آپدیت شدن دیتابیس، اطلاعات کنترلی هم متناظر با اون آپدیت میشن (یا یکجا و هنگام بسته شدن برنامه)

دفعات بعدی که برنامه اجرا میشه، ابتدا این دیتا کنترلی رو با دیتابیس مقایسه میکنه و اگر یکی بود اجازه ادامه کار رو میده وگرنه برنامه رو میبنده (اینجا میشه دیتابیس رو ریست هم کرد!)

mazoolagh
پنج شنبه 10 مهر 1399, 12:50 عصر
حالا به این که این دیتای کنترلی کجا نگهداری بشه میرسیم.

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

راه متداول نگهداری در دانگل سخت افزاری هست (حتی در دانگل های قدیمی که روی پورت پارالل کار میکرد این امکان بود)

به این ترتیب نیازی هم به قفل نرم افزاری نیست (شماره سریال مادربرد و هارد و ...) و مشتری میتونه روی هر سیستم دلخواه برنامه رو اجرا کنه ولی فقط یک نسخه دیتا میتونه داشته باشه.

کلا قفل نرم افزاری بدلایل زیر راهکار خوبی نیست (در واقع بد هم هست!):
1- با هر تغییر در سیستم نیاز به آپدیت توکن هست و خراب شدن قطعات هم یک امر متداول هست
2- امکان پرتابل بودن کار رو از بین میبره - خیلی از کاربرها پروژه هاشون رو بین دفتر و خونه منتقل میکنن و یا در چند محل کار میکنن

کلا از هر چیزی که باعث ناراحتی کاربر میشه باید دوری کرد، وگرنه در اولین فرصت یک جایگزین بهتر پیدا میکنه.

mazoolagh
پنج شنبه 10 مهر 1399, 12:55 عصر
در مورد دیتابیس و اینکه رمز رو باید داد یا نه؟

درسته که دیتا کاربر مال خودش هست، ولی طراحی دیتابیس هم مال برنامه نویس هست.
کافی هست یک امکان اکسپورت دیتا به xml یا csv در برنامه بگذارید.

در هر صورت نباید خریدار رو از دسترسی به دیتا خودش محروم کرد.

دیتابیس برنامه های شرکت های بزرگ (مثل همین همکاران سیستم) کاملا باز هست-فقط یک قفل سخت افزاری روی سرور دارن.

narpco
پنج شنبه 10 مهر 1399, 16:49 عصر
در مورد دیتابیس و اینکه رمز رو باید داد یا نه؟

درسته که دیتا کاربر مال خودش هست، ولی طراحی دیتابیس هم مال برنامه نویس هست.
کافی هست یک امکان اکسپورت دیتا به xml یا csv در برنامه بگذارید.

در هر صورت نباید خریدار رو از دسترسی به دیتا خودش محروم کرد.

دیتابیس برنامه های شرکت های بزرگ (مثل همین همکاران سیستم) کاملا باز هست-فقط یک قفل سخت افزاری روی سرور دارن.




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


به هر حال ممنون از راهنمایی های شما ...

sastwhc
دوشنبه 14 مهر 1399, 11:55 صبح
کلا از هر چیزی که باعث ناراحتی کاربر میشه باید دوری کرد، وگرنه در اولین فرصت یک جایگزین بهتر پیدا میکنه.
این جمله طلايیه....صدردصد موافقم