PDA

View Full Version : ضمیمه کردن یک فایل در پروژه و استفاده از آن



system32
یک شنبه 04 مرداد 1388, 18:22 عصر
سلام به همگی.

دوستان کسی راهی سراغ داره که بتوان یک فایل را به پروژه ضمیمه کرد به طوری که دیگران به آن دسترسی نداشته باشند یعنی به فایل اجرایی ما برای همیشه ضمیمه شده باشه. و سپس چطور می توان از آن در پروژه استفاده کرد. یعنی چطور می شه به این فایل لینک داد. تا یادم نرفته اینکه فایلی که می خواهم ضمیمه کنم یه فایل اجراییه (exe). ممنون.

Unknownlive
یک شنبه 04 مرداد 1388, 20:38 عصر
می تونی فایل ها را در Resource پروژه بریزید یا اطلاعات را در فایل Dat ذخیره کنی و یا با فایل های XML کار کنی البته این سه روش برای انواع مختلف فایل ها به کار می ره اما در مورد exe چیزی نمی دونم

sd.CSharpProgrammer
یک شنبه 04 مرداد 1388, 21:40 عصر
سلام

اگه فايلت عكس بود ميتونستي از دستور زير استفاده كني :



using System.Reflection;


Assembly.GetExecutingAssembly().GetManifestResourc eStream
("ApplicationName.FileName.FileExtension");




مثال :





Image img = Image.FromStream(Assembly.GetExecutingAssembly().G etManifestResourceStream("WindowsFormsApplication1.Resources.Blue hills.jpg");



دستور بالا case sensitive هست. حتي به پسوند فايل هم حساسه. اگه پسوندت بزرگه (مثل JPG.) عيناً مثل خودش رو بنويس.

يه روش ديگه اينه :




global::WindowsFormsApplication1.Properties.Resour ces.Blue_hills;




تو دستور بالا بجاي WindowsFormsApplication1 اسم پروژت رو بنويس و به اين روش به فايلت دسترسي پيدا مي كني.

هر دو رو با كمي تغيير امتحان كن شايد كار كرد! ولي فكر كنم با دستور دوم بشه همچين كاري كرد.
من تا اونجا كه ميدونستم رو در اختيارت گذاشتم :لبخند:

موفق باشي

system32
یک شنبه 04 مرداد 1388, 22:34 عصر
سلام.

ممنون از شما.

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

در جواب کاربر محترم sd.CSharpProgrammer باید بگویم من نیز از این روش استفاده کردم و عیب این کار این است که در نهایت فایل را به صورت Stream برمی گرداند.

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

hozouri
دوشنبه 05 مرداد 1388, 08:22 صبح
دوست عزیز وقتی که یه فایل EXE رو از Resourse می خواهی بخونی اول اون رو توسط byte[] بخون بعد در حافظه (مثلاً هارد) ذخیره کن و بعد اون فایل رو اجرا کن. برای این که کاربر نتونه به فایلت دسترسی داشته باشه این فایل رو Hidden و در حالتی بزار که در آن واحد فقط یک نمونه از اون رو بتونی اجرا کنی و بعد از اتمام کار یا در exit پروژه اون فایلی رو که می خواهی پاک کن...

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

موفق باشی ...

system32
دوشنبه 05 مرداد 1388, 09:01 صبح
دوست عزیز وقتی که یه فایل EXE رو از Resourse می خواهی بخونی اول اون رو توسط byte[] بخون بعد در حافظه (مثلاً هارد) ذخیره کن و بعد اون فایل رو اجرا کن

ممنون از شما.

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

hozouri
دوشنبه 05 مرداد 1388, 09:06 صبح
ممنون از شما.

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

دوست عزیز بهترین روش برای این کار فکر کنم همون روش دومی هست که گفتم یعنی به طور مستقیم این فایل رو بر روی حافظه بار گذاری کنی می تونی از بچه های C کمک بگیری بعد اون رو به صورت dll درون پروژه بذار و بعد هم دیگه می شه فایل رو در حافظه رم بارگزاری کرد ...

Unknownlive
دوشنبه 05 مرداد 1388, 09:18 صبح
بابا مسئله را چرا انقدر پیچیده می کنید اخه بار گذاری مستقیم بدون اجازه سیستم عامل ان هم در ویندوز های جدید مایکروسافت با قابلیت امنیت بالا نه می تونید هم اینکه این یک کار مخرب امیز محسوب می شه و امکان داره توسط انتی ویروس ها برنامه Locked بشه اگه تو Resource بشه یه دستکاری های کرد خوبه من تحقیق می کنم جواب اونا تا چند وقت دیگه می دم

system32
دوشنبه 05 مرداد 1388, 16:58 عصر
این پست صرفا برای بالا آمدن تاپیک هست.

Unknownlive
دوشنبه 05 مرداد 1388, 20:12 عصر
این پست صرفا برای بالا آمدن تاپیک هست.
منظورتون کدوم پسته اگه ما را می گی خودتون ظاهرا سر دسته هستید زیرا این اخطاری که دادید در اختیارات شما نیست در واقع ربطی نداره و جزو قوانین که کاربران عادی نباید اخطار بدن و در ضمن نگاه به سوابق بنده و خدتون کنید معلوم میشه چون تاریخ ایجاد اکانت،تعداد تشکر و پست نشان می ده

system32
دوشنبه 05 مرداد 1388, 21:20 عصر
چرا اینقدر شلوغش کردی. چون مطلب من به صفحه دوم رفته بود و من هنوز به جواب نرسیدم این پست را دادم که مطلبم به صفحه اول بیاد. منظور من از جمله بالا آمدن تاپیک این بود که تاپیکم به صفحه اول بیاد. در ضمن دوستان دیگر هم از این جمله برای بالا آمدن تاپیکشان استفاده می کنند. امبدوارم که منظورم را حالا خوب متوجه شده باشید.

cactoss84
چهارشنبه 21 مرداد 1388, 07:09 صبح
سلام من یه فایل tif رو تویsql ذخیره میکنم و روی فرم برنامه تویه picturebox بازیابیش میکنم و سرعتش خیلی پایین راهی هست واسه بالا بردن سرعت لود شدن عکس ها؟؟؟