PDA

View Full Version : قرار دادن مقدار در خود برنامه



مبین رنجبر
چهارشنبه 30 خرداد 1386, 09:50 صبح
سلام .. چطور می شه مقدار یا عددی رو بدون استفاده از رجیستری یا ثبت در فایل ، تو خود فایل اجرایی برنامه ذخیره کنه ؟ .... یعنی مقداره رو به برنامه بدیم و بدون اینکه از رجیستری یا فایلی کمک بگیره در مراجعات بعدی به اون برنامه همون مقدار باشه ............با تشکر

sinpin
چهارشنبه 30 خرداد 1386, 11:52 صبح
سلام .. چطور می شه مقدار یا عددی رو بدون استفاده از رجیستری یا ثبت در فایل ، تو خود فایل اجرایی برنامه ذخیره کنه ؟ .... یعنی مقداره رو به برنامه بدیم و بدون اینکه از رجیستری یا فایلی کمک بگیره در مراجعات بعدی به اون برنامه همون مقدار باشه ............با تشکر

میتونید مقادارتون رو به انتهای فایل اجرایی برنامه اضافه کنید و توی برنامه اون رو بخونید.

mpmsoft
چهارشنبه 30 خرداد 1386, 12:30 عصر
شما می تونید یک Resource به برنامت اضافه کنی و بعد یک String بهش اضافه بکنی و سپس با دستور SaveResource مقدار اونو عوض کنی بنابراین روی Exe نوشته می شه

noorsoft
چهارشنبه 30 خرداد 1386, 12:50 عصر
شما می تونید یک Resource به برنامت اضافه کنی و بعد یک String بهش اضافه بکنی و سپس با دستور SaveResource مقدار اونو عوض کنی بنابراین روی Exe نوشته می شه
روشی که دوستمون میگه خوبه ولی باید ببینیم شما برای چه کاری به این مورد احتیاج داری اگه بحث امنیته این روش مناسب نیست چون برنامه های ریسورس میتونن به اطلاعاتی که شما ذخیره کرده اید دسترسی پیدا کنن

مبین رنجبر
چهارشنبه 30 خرداد 1386, 13:11 عصر
تو وی بی مطمئنی تابع SaveResource وجود داره ؟ ....من امتحان کردم با تابع LoadRESString می شه اون مقدار رو گرفت ... پس چطوری می شه تغییرش داد ؟

مبین رنجبر
چهارشنبه 30 خرداد 1386, 13:14 عصر
آقای نور سافت ... من می خوام برنامه ای بنویسم که اگر یه مقدار تو برنامه وجود داشت برنامه اجرا نشه ...... اگر روش مطمئن تری هست لطفا بگین ...

Evil 69
چهارشنبه 30 خرداد 1386, 16:05 عصر
مثلا میخای اگر برنامه رو اجرا کرد اون مقدار بشه "True "تا کاربر یک بار دیگه نتونه او رو اجرا کنه ؟ مثل yahoo که فقط یک بار اجرا می شه .

noorsoft
چهارشنبه 30 خرداد 1386, 17:42 عصر
مثلا میخای اگر برنامه رو اجرا کرد اون مقدار بشه "True "تا کاربر یک بار دیگه نتونه او رو اجرا کنه ؟ مثل yahoo که فقط یک بار اجرا می شه .

برای اینکار باید این کد را بنویسی



Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "This Program already run"
End
End If
End Sub

noorsoft
چهارشنبه 30 خرداد 1386, 17:44 عصر
اگه برای قفل گذاری میخای استفاده کنی بهترین راه استفاده از قفلهای سخت افزاریه

Evil 69
چهارشنبه 30 خرداد 1386, 17:47 عصر
آره همینی که noorsoft میگه

noorsoft
چهارشنبه 30 خرداد 1386, 17:55 عصر
اگه دیده باشید اغلب افراد با استفاده از یک ریسورس ادیتور برمیدارن برنامه های خارجی را فارسی میکنن (بدون نیاز به دانش برنامه نویسی) و بعد اسم و آدرس خودشون را هم روش میذارن البته من یک برنامه دیدم که اینکار را نمذاره شما انجام بدید یعنی کوچکترین تغییری که توش بدین اجرا نمیشه اونم نرم افزار RADMIN شاید شما همچین هدفی داشته باشید اگه هدفت اینه بگو تا روش کارش را کامل برات بگم چطوری میشه چک کرد برنامه دستکاری شده یا نه

مبین رنجبر
چهارشنبه 30 خرداد 1386, 19:21 عصر
آقایون من فقط می خوام اگر تو برنامه عدد 12345678 برنامه یه پیغم بده ..... از طریق برنامه هم قابل تغییر باشه .. همین ... چرا شلوغ می کنید ؟

mpmsoft
جمعه 01 تیر 1386, 21:12 عصر
من مخالف قفل سخت افزاری هستم


چرا چون تجربه بدی ازش داشتم برای تعداد سیستمهای بالا (بیشتر از 1200)

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

perfeshnal
جمعه 01 تیر 1386, 23:06 عصر
دوستان چرا تاپیک رو منحرف می کنید بنده خدا که از قفل سخت افزاری و غیره صحبت نمی کنه
دوست من فکر نکنم این کاری که شما میگید امکان پذیر باشه چون وقتی شما فایل اجرایی خودتون رو درست می کنید دیگه نمی تونید داخل اون فایل چیزی بنویسید یا مقداری رو در داخل فایل اجرایی تغییر بدید من نمی دونم شما می خواهید چکاری انجام بدید ولی بهترین روش برای ثبت بعضی از کارها نوشتن در یک فایل و یا ریجستری که خیلی ساده صورت می گیره

موفق باشید

senator_aka
جمعه 01 تیر 1386, 23:22 عصر
سوال بسیار خوبی اما

اما این خیلی مهم هست که می خواهید چی کارکنید یا اینکه می خواهید چه برنامه ای را بنویسید؟

این کمک بسیار بزرگی به برنامه نویس هست که بدونه چی کار می خواد بکنه !!

من منظور شما از این جمله را نفهمیدم :
"
آقایون من فقط می خوام اگر تو برنامه عدد 12345678 برنامه یه پیغم بده ..... از طریق برنامه هم قابل تغییر باشه .. همین ... چرا شلوغ می کنید ؟
"
یعنی چی اوون عدد ؟؟

مبین رنجبر
شنبه 02 تیر 1386, 11:19 صبح
اقا من اصلن کاری به قفل ها ندارم .....

من می خوام این کارای زیر رو انجام بدم :

تو فرم یه تکست باکس داریم .... ورودی کاربر رو می گیریم تست می کنیم اگر کدی که کاربر وارد کرده 12345 بود پیغام غلط بودن کر بده و اگر کد : 123 وارد کرد کد داخل برنامه بشه : 456


همین ...............

sinpin
شنبه 02 تیر 1386, 11:27 صبح
اقا من اصلن کاری به قفل ها ندارم .....

من می خوام این کارای زیر رو انجام بدم :

تو فرم یه تکست باکس داریم .... ورودی کاربر رو می گیریم تست می کنیم اگر کدی که کاربر وارد کرده 12345 بود پیغام غلط بودن کر بده و اگر کد : 123 وارد کرد کد داخل برنامه بشه : 456


همین ...............

جواب شما در پست سوم و چهارم داده شده برای بحث امنیت هم میتونید اون مقدار رو کد کنید

majjjj
شنبه 02 تیر 1386, 13:08 عصر
اقا من اصلن کاری به قفل ها ندارم .....

من می خوام این کارای زیر رو انجام بدم :

تو فرم یه تکست باکس داریم .... ورودی کاربر رو می گیریم تست می کنیم اگر کدی که کاربر وارد کرده 12345 بود پیغام غلط بودن کر بده و اگر کد : 123 وارد کرد کد داخل برنامه بشه : 456


همین ...............
باسلام
اگه درست متوجه شده باشم شما باید کارهای زیر راانجام بدید
1 از منوی project گزینه add form رو انتخاب کنید
2 از پنجره ای که باز میشه گزینه log in dialog رو انتخاب کنید
3 روی دکمه ok در فرم دبل کلیک کنید
4 دستور If txtPassword = "password" Then رو عوض کنید بدین صورت که بجای "password " مقدار مورد نظر خودتون 123 را قرار دهید

مبین رنجبر
شنبه 02 تیر 1386, 14:13 عصر
آقای sinpin جواب ها پست 3 و 4 عملی نیست ... یهنی نمیشه با اون روش ها کد رو Change کرد ............

آقای majjjjj با این کاری که شما پیشنهاد دادین مقدار در برنامه ذخیره می شه ؟

sinpin
شنبه 02 تیر 1386, 14:18 عصر
آقای sinpin جواب ها پست 3 و 4 عملی نیست ... یهنی نمیشه با اون روش ها کد رو Change کرد ............

باور کنید میشه !
منظورتون از اینکه نمیشه کد رو change کرد چیه دقیقا ؟

مبین رنجبر
شنبه 02 تیر 1386, 18:17 عصر
آقای sinpin یعنی من اگر بخوام اون مقدار داخل Resource رو تغییر بدم امکان پذیر نیست

فقط می شه LoadRESData کرد

azmoodeh
شنبه 02 تیر 1386, 18:28 عصر
سلام

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

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

مبین رنجبر
شنبه 02 تیر 1386, 18:40 عصر
متشکر ...............

__siavash__
شنبه 02 تیر 1386, 18:57 عصر
سلام
من کل این تاپیکو خوندم و آخر نفهمیدم اصلا منظور این سوال چیه !
شاید منظورت اینه که وقتی فایل exe. اجرا میشه و در حین کار با اون مثلا یه مقداری رو تغییر میدیم حالا دفعه بعد که برنامه اجرا میشه مقدار جدید، مقدار تغییر یافته باشه
خوب برای این جور کارا مثلا از ریجستری استفاده میکنند و من هم نشنیدم که بشه این تغییر رو تو خود فایل exe. ثبت کرد

یا یه جور دیکه


تو فرم یه تکست باکس داریم .... ورودی کاربر رو می گیریم تست می کنیم اگر کدی که کاربر وارد کرده 12345 بود پیغام غلط بودن کد بده و اگر کد : 123 وارد کرد کد داخل برنامه بشه : 456
و از اون به بعد که برنامه رو میبندیم و باز میکتنیم کد داخل برنامه 456 باشه !

قسمت آبی رنگو من اضافه کردم !
یا این جوری مثلا میخوای پسورد رو از کاربر بگیری و پسوردی که تو برنامه گذاشتی تا با اون چک بشه 123456 هستش حالا اگه کاربر پسورد رو اشتباه زد از اون دفعه به بعد پسوردی که برنامه باید چک کنه 456 باشه !
خوب این که نمیشه چون اگه فایل exe. بسته بشه دفعه دوباره اول پسورد با 123456 چک میشه
اگه این جوری میشد خیلی از مشکلات حل میشد مثل گذاشتن قفل زمانی برای برنامه که تو یه تاپیک کلی راجع بهش بحث شد
( البته به قول استاد دوستمون "برنامه نویسی یعنی کار نشد نداره " )



الان دارم نگاه میکنم میبینم قسمت اول و دوم هر دوش یکی شد :چشمک: :گیج:

sinpin
یک شنبه 03 تیر 1386, 10:25 صبح
خوب این که نمیشه چون اگه فایل exe. بسته بشه دفعه دوباره اول پسورد با 123456 چک میشه
اگه این جوری میشد خیلی از مشکلات حل میشد مثل گذاشتن قفل زمانی برای برنامه که تو یه تاپیک کلی راجع بهش بحث شد

دوست عزیز من خودم اینکار رو انجام دادم. از طریق افزودن مقدار در انتهای فایل
فقط نکته ای که داره اینه : فایل برنامه درحال اجرا رو نمیشه تغییر داد (access denied) برای حل این مشکل من راه حل زیر رو رفتم :
1- من یه برنامه کوچیک نوشته بودم (A) که اول میومد چک میکرد اگه برنامه اصلی بسته شده بود مقداری رو که به اون پاس داده بودم به انتهای فایل برنامه اصلی اضافه و بعد از موفقیت خودش رو close میکرد
2- قبل از اینکه برنامه اصلی رو close کنم اول برنامه A رو در یک thread مستقل اجرا میکردم بعد برنامه اصلی رو بلافاصله close میکردم
3- و خب حتما برنامه اصلی هم وقتیکه اجرا میشد مقداری رو که در انتهای اون بصورت کد شده گذاشته بودم رو میخوند و بعد ...

sinpin
یک شنبه 03 تیر 1386, 10:37 صبح
اگه این جوری میشد خیلی از مشکلات حل میشد مثل گذاشتن قفل زمانی برای برنامه که تو یه تاپیک کلی راجع بهش بحث شد

:متفکر:
فکر نمیکنم قفل زمانی کاربرد مناسبی برای این منظور باشه
چون همیشه میشه یک کپی اولیه از نرم افزاری رو که باهاش کار نشده (و مقدار اولیه رو بطریقی در خودش داره مثلا :‌30 روز) رو نگه داشت و هر موقع که expire شد (این مقدار شد :‌صفر روز) از اون کپی اولی استفاده کرد (و باز روز از نو و ...)

مبین رنجبر
یک شنبه 03 تیر 1386, 11:11 صبح
آقایون بیخیال شدم .......... اینقدر منحرف نشید ...

azarsoft
یک شنبه 03 تیر 1386, 18:14 عصر
سلام دوست عزیز
من این روش رو که شما می خواهید توی یک نمونه برنامه خارجی که سورش هم بود دیدم با یک دستور پیش فرض ها رو دوباره ذخیره می کرد بدون اینکه از ریجستری یا فایل دیگه ای استفاده کنه تا اون جایی که یادم میاد برات اینجا توضیح می دم ولی توی اولین فرصت هم برنامه رو از تو آرشیو پیدا می کنم و برات اینجا می ذارم

SaveSetting App.EXEName, "object name", "object caption", عملکردی که می خواهید دوباره ذخیره بشه

مبین رنجبر
یک شنبه 03 تیر 1386, 20:28 عصر
عزیزه من آقای azarsoft بهتره سوال منو با دقت بخونی گفتم بدین استفاده از رجیستری و ذخیره در فایل

noorsoft
دوشنبه 04 تیر 1386, 10:09 صبح
بهترین راه حل برای شما استفاده از قسمت Properties برنامه Exe است اگه دقت کنی یکسری مشخصاتی برای برنامه از شما گرفته میشن و بعد از کامپایل شدن داخل فایل اجرایی قرار میگیرن شما میتونین اطلاعاتتون را داخل همون قسمت در برنامه ذخیره کنین
و برای خوندنشون هم از App. استفاده کنی

sinpin
دوشنبه 04 تیر 1386, 12:11 عصر
آقایون بیخیال شدم .......... اینقدر منحرف نشید ...

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

مبین رنجبر
دوشنبه 04 تیر 1386, 12:31 عصر
آقای sinpin .. من منظورم از منحرف شدن این بود که همه دوستان داشتن به قفل نرم افزاری کار می کردن

sinpin
سه شنبه 05 تیر 1386, 08:12 صبح
آقای sinpin .. من منظورم از منحرف شدن این بود که همه دوستان داشتن به قفل نرم افزاری کار می کردن

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

در هر صورت جواب شما هم در همین حین داده شد :چشمک:

مبین رنجبر
سه شنبه 05 تیر 1386, 14:50 عصر
آقای sinpin من هنوز جوابمو نگرفتم ...... بهترین روش روشی بود که یکی از دوستان که الان من حضور ذهن ندارم که کی بود گفته بود .. ولی جوابشون کامل نبود ... یعنی با روشی ایشون فقط می شد که از اطلاعات فایل EXE در Properties خوند ولی نمی شه دوباره اونارو تغییر داد ..... در مقابل تغییر ، پیغامی مبنی بر فقط خواندنی بودن این مقادیر نشان می داد ...

perfeshnal
سه شنبه 05 تیر 1386, 15:00 عصر
به نظر من که شما جوابتون رو گرفتید شما نمی تونید به یک فایلی که exe شده مقداری رو اضافه کنید. فقط می تونید مقداری رو ازش بخونید. البته در VB زبان های دیگه رو نمی دونم

newgoldenman
سه شنبه 05 تیر 1386, 15:26 عصر
بهتر از رجیستری، رجیستریه! بری این کار!

مبین رنجبر
سه شنبه 05 تیر 1386, 20:21 عصر
آخه فقط خوندن از اون مقدار به چه درده من می خوره ؟ ... خوب مگه عقلم کمه ... اون مقدار رو توی خاصیت text تکست باکس می زارم همیشه هست دیگه ........

newGoldenMan میگم از رجیستری نهههههههههههههههههههههههه هههههههه ... رجیستری و فایل خیلی تابلو هستن راحت لو میره .... من از این 2 تا روش در مسیر های سختی استفاده کردم ولی بی فایده بود ... برا همین تصمیم گرفتم 1 راه مطمئن تر پیدا کنم ........



آقا اصلن این ذخیره مقدار در EXE بی خیال ... یه روش ایمن دیگه واسه این کار وجود نداره ؟ .... من می خوام کاربر تحت هیچ شرایتی به اون مقدار دسترسی نداشته باشه ( نه مقدار اصلی نه مقدار رمز گذاری شده نه هیچ چیز دیگه ) .........................

perfeshnal
سه شنبه 05 تیر 1386, 21:58 عصر
سلام

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

sinpin
چهارشنبه 06 تیر 1386, 08:57 صبح
به نظر من که شما جوابتون رو گرفتید شما نمی تونید به یک فایلی که exe شده مقداری رو اضافه کنید.

لطفا به پست های قبلیه من توجه کنید :چشمک:
من خودم قبلا تست کردم و جواب گرفتم دیگه نمیدونم این همه داستان واسه چیه ؟!

sinpin
چهارشنبه 06 تیر 1386, 08:58 صبح
منظورم این پست بود :


دوست عزیز من خودم اینکار رو انجام دادم. از طریق افزودن مقدار در انتهای فایل
فقط نکته ای که داره اینه : فایل برنامه درحال اجرا رو نمیشه تغییر داد (access denied) برای حل این مشکل من راه حل زیر رو رفتم :
1- من یه برنامه کوچیک نوشته بودم (A) که اول میومد چک میکرد اگه برنامه اصلی بسته شده بود مقداری رو که به اون پاس داده بودم به انتهای فایل برنامه اصلی اضافه و بعد از موفقیت خودش رو close میکرد
2- قبل از اینکه برنامه اصلی رو close کنم اول برنامه A رو در یک thread مستقل اجرا میکردم بعد برنامه اصلی رو بلافاصله close میکردم
3- و خب حتما برنامه اصلی هم وقتیکه اجرا میشد مقداری رو که در انتهای اون بصورت کد شده گذاشته بودم رو میخوند و بعد ...

sinpin
چهارشنبه 06 تیر 1386, 09:02 صبح
شما میتونید مقدارتون رو حتی در وسط فایل و بعضی جاهای خالی هم قرار بدید فقط کافیه که اون فایل رو توی یک editor باز کنید و موقعیت مکانی که میخواهید مقدارتون رو قرار بدید رو یادداشت نمایید و توی برنامه استفاده کنید. ولی فکر میکنم انتهای فایل بهتر باشه

مبین رنجبر
چهارشنبه 06 تیر 1386, 20:00 عصر
خوب اگه می شه لطفا بگین یا یه مثال بزنین که چطوری می شه اون مقدار رو به آخر فایل اضافه کرد ................

noorsoft
پنج شنبه 07 تیر 1386, 05:45 صبح
اطلاعاتی که میخای ذخیره بشه چند کارکتره

مبین رنجبر
پنج شنبه 07 تیر 1386, 20:54 عصر
حالا هر مقدار کاراکتر .. شما فرض کن 4 تا کاراکتر ... من روشی می خوام که بتونم هم اون مقدار رو تغییر بدم و هم لودش کنم ..