ورود

نسخه کامل مشاهده نسخه کامل : binding



romper
23-11-2008, 17:33
چطور می شه یه فایل exe رو به یه فایل دیگه bind کرد، بطوریکه با باز کردنه فایل bind شده، هر دو برنامه باز شه؟
لطف کنین با VB.NET باشه.

می دونم سوالم تکراریه
ولی هیچ کجا جواب درست و حسابی ندیدم

_H2_
23-11-2008, 23:05
سلام
اگر exe دوم که باید با exe اول اجرا شود در بیرون و کنار exe اول قرار دارد میتوانید دستور زیر را در exe اول بدهید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در غیر این صورت و اگر exe دوم باید embedded داخل exe اول باشد، اگر تحت framework.net باشد میتوان از همان داخل اجرایش کرد و گرنه حتماً باید در مسیر موقتی در هارد extract شود و با اصلاح همان دستور فوق اجرا شود.
موفق باشید.

romper
25-11-2008, 17:08
دوست من،_h2_، از راهنماییت ممنونم
امتحانش می کنم

romper
25-11-2008, 18:38
شاید من نتونستم منظورم رو درست برسونم

من می خوام مستقیما برنامه ای رو به یه فایل exe بچسبونم و در نهایت یک فایل با نام new name.exe داشته باشم
که اگه من new name.exe رو در هر کجا به صورت مستقل اجرا کردم، هر دو برنامه اجرا بشن.
از الگوریتم Extract هم نمی خوام استفاده کنم

کدی که شما گذاشتین از تابع start برای باز کردنه یه برنامه استفاده می کنه !!!!!

romper
25-11-2008, 20:41
من با کد زیر می تونم محتویات فایل اول رو به انتهای فایل دوم اضافه کنم
ولی با اجرای فایل دوم، فایل اول دیگه اجرا نمی شه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
26-11-2008, 23:07
سلام

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

اگر میخواهید با عرف معمول یک exe را درون دیگری جای دهید و اجرا کنید، میتوانیم بحث کنیم!
همانطور که قبلاً گفتم دو حالت یا exe دومی شما مدیریت شده و تحت دات نت است ویا native است.
2) اگر مدیریت شده و دات نتی باشد، میتوان انرا یکراست در RAM لود و اجرا کرد.
3) اگر مدیریت شده نباشد و Native باشد، باید قبل از اجرا آن را در هارد و به صورت موقت Extract کنید و بعد از پایان کار میتوانید حذفش کنید.

1) یا 2) یا 3) ؟؟؟

romper
27-11-2008, 11:38
لطف کنین در مورد 2 توضیح بیشتر بدین
چطور می شه یه برنامه رو مستقیما توو ram اجرا کرد؟

_H2_
28-11-2008, 01:28
سلام
1)
شما میتوانید هر فایلی را در داخل exe یا dll خود جای دهید.
Project->AddExistingItem
فایل جدید اضافه شده را در SolutionExplorer انتخاب کنید و در پنجره Properties
Build Action = Embedded Resource

فایل داخل exe یا dll شما قرار گرفت.

2)
سپس میتواند در کد runtime با دستور زیر کل فایل را در buffer لود کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


3)
اگر این فایل exe یا dll مدیریت شده باشد میتوانید با دستور زیر لودش کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

4)
در نهایت اگر exe باشد میتوانید با دستور زیر اجرایش کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

romper
28-11-2008, 01:42
از راهنماییت ممنونم
ببینم چیکار می تونم بکنم !!!

romper
28-11-2008, 15:06
H2 ی عزیز

من تونستم از کد شماره 2 به صورت زیر استفاده کنم



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما همونطور که می بینید، من مجبور شدم فایل رو توو سیستم ذخیره کنم.(که نمی خوام اینطور شه)

از کدهای بعدی هم نتونستم استفاده کنم(چون برای System.Reflection.Assembly.Load(buffer) پیام خطا می داد. عکس پیام خطا رو می تونین در زیر ببینید)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

ممنون می شم اگه کمکم کنی.:20:
راستی من اینکار رو برای اطلاعات عمومیم می خوام نه برای انجام پروژه خاصی !!!

_H2_
29-11-2008, 01:07
سلام
به نظر و به احتمال زیاد تا اینجا کار را صحیح انجام داده اید که با همچین پیغامی مواجه شده اید.
منتها فایل مورد شما یکسری وابستگی ها دارد (dependency) ، یعنی یک سری dll دارد که reference شده و برنامه جاری شما نمیتواند این وابستگی ها را تغذیه کند.

من باید بدانم برنامه دوم شما چه وابسته گی ها و ارجاعاتی دارد تا بتوانم دقیق کمک کنم.
- میتوانید فایل دوم را برایم آپلود کنید
- اگر سورس دومی را دارید میتوانید در VS چک کنید و ببینید چه Reference هایی دارد.
- میتوانید از برنامه ildasm.exe استفاده کنید و فایل دوم را تحویلش دهید و گزینه MANIFEST را کلیک کنید.

romper
29-11-2008, 12:33
فایل مورد شما یکسری وابستگی ها دارد (dependency) ، یعنی یک سری dll دارد که reference شده و برنامه جاری شما نمیتواند این وابستگی ها را تغذیه کند.

نه اینطور نمی تونه باشه. چون فایلی که انتخاب کردم portable بود و همچنین بجای یه فایل exe از jpg استفاده کردم که بازم همون پیام خطا رو می ده.
راستی فایل دوم من getbot.exe هستش که فکر کنم داشته باشین !!
یه چیز دیگه من از .NET 2008 استفاده می کنم.

_H2_
29-11-2008, 23:08
سلام

نه اینطور نمی تونه باشه. چون فایلی که انتخاب کردم portable بود
این مطلب مقائر با چیزهایی که گفتم نیست.
محیط CLR امنیت خاص خود را دارد، وقتی فایل مستقیماً توسط API های سیستم عامل و از هارد اجرا شود، دسترسی مستقیمی به فایلهای محلی و مهمتر از آن GAC خواهد داشت.
ولی وقتی فایلی از داخل برنامه شما در محیط CLR اجرا میشود، مسئولیت تامین منابع و امنیت با خود شما است که این عمل به طور مشخص توسط System.Security.Policy.Evidence کنترلر میشود.


راستی فایل دوم من getbot.exe هستش که فکر کنم داشته باشین !!
من نه ضد ویروس نصب میکنم و نه به این راحتی روی exe ای دبل کلیک میکنم و نصبش میکنم!
ولی فایل مورد نظر شما را توانستم دانلود کنم، اگر این همان فایلی باشد که مد نظر شما است، باید بگویم که این فایل اصلاً دات نتی و تحت clr نیست.
اگر به پست 2 و 6 دقت ککنید، متوجه میشوید که تاکید کردم برای این نحوه کار کرد فایل دوم خودش باید توسط زبانی دات نتی (مثل VB.Net و C#.Net و VC++.Net و Delphi.Net و...) ساخته شده باشد.

اگر مدیریت شده و دات نتی باشد، میتوان انرا یکراست در RAM لود و اجرا کرد



فایل مورد نظر شما این خصیصه را ندارد و نمیتواند در محیط clr اجرا شود.
تنها راه اجرای این فایل در دات نت همان extract در هارد و اجرا مستقیم است.

اگر مدیریت شده نباشد و Native باشد، باید قبل از اجرا آن را در هارد و به صورت موقت Extract کنید و بعد از پایان کار میتوانید حذفش کنید

romper
30-11-2008, 17:58
آهــــــــــــــــــــــا !!!!!
تازه فهمیدم

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

romper
01-12-2008, 00:17
یه سوال دیگه

چطور می شه در حالتی که برنامه کامپایل شده، اونوقت ری سورس رو اضافه کنیم یا add existing بکنیم ؟

romper
01-12-2008, 00:18
یه چیز دیگه، لطفا اسمتون رو بفرمایید تا با نام شما از مطالبتون استفاده کنم.

اگه اشتباه نکنم، آقای حاجی شریفی هستین ! درسته؟

_H2_
01-12-2008, 00:36
سلام

چطور می شه در حالتی که برنامه کامپایل شده، اونوقت ری سورس رو اضافه کنیم یا add existing بکنیم ؟
من بلد نیستم ولی احتمال ضعیفی دارد که بشود انجامش داد.

ولی یک کار دیگر را میشود انجام داد، کامپایل در runtime.
یعنی برای کامپایل و ساخت exe و dll کامل و با تمام امکانات، نیازی به VS نیست و میتوان در runtime برنامه یک کد String را کامپایل کرد و منابع جدید به آن افزود و...


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

romper
01-12-2008, 11:31
منظورتون کد زیر هست ؟



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه منظورتون همینه، چطور باید چیزی embed کنم؟

_H2_
01-12-2008, 23:54
سلام

منظورتون کد زیر هست ؟
بله کدی شبیه همین (دیگه هر کدی option ها و تنظماتی دارد.)


اگه منظورتون همینه، چطور باید چیزی embed کنم؟
("parameters.EmbeddedResources.Add("C:\file.extension

=====

این قابلیت جال در واقع در نهایت به Exe کامپایلر اصلی ارجاع داده میشود ولی بالاخره برای ما یک امکان runtime جالب و زیبا و قدرتمند است، حتی میتوان خروجی کامپایل شده را بدون ذخیره روی هارد (در پشت صحنه حداقل برای لحظه کوتاهی فایلی در temp ذخیره میشود) مستقیماً در RAM اجرا کرد.

بهرحال چیز جالبی است.

romper
02-12-2008, 02:38
آقای حاجی شریفی
چطور می شه توو کدی که توو پست قبلیم گذاشتم، به فایل کامپایل شده، Icon اضافه کرد؟
یعنی می خوام موقعی که فایل Out.exe توو هارد ذخیره شد، Icon داشته باشه.
من گشتم، ولی چیزی پیدا نکردم.

_H2_
02-12-2008, 23:38
سلام
این کد را تست کنید:
"""parameters.CompilerOptions &= " /win32icon:""C:\file.ico

romper
03-12-2008, 18:43
جنـــــاب حاجی شریفی
دست گلت درد نکنه
خیلی باحالی
دمت گرم

CompilerOptions های دیگه ای که می شه بکار برد، چیه ؟

_H2_
03-12-2008, 23:57
سلام
در واقع کل این عملیان توسط همین تنظیم خط فرمانی انجام میشود
(انها هم به این تبدیل یا نگاشت میشوند، در اصلی برای بخش های مهم، یک Property برای استفاده راحت تر تعبیه شده)

لیست کامل را میتوانید در زیر مشاهده کنید
msdn.microsoft.com/en-us/library/w95cx9k1.aspx