PDA

View Full Version : سوال: اعلام درخواست دسترسی ادمین برای دیگر فایلها



loo30fer
جمعه 10 تیر 1390, 17:01 عصر
با سلام من میخواستم فایلهای ساخته شده با MMB رو همینطور دیگر فایلها رو به صورت Admin اجرا کنم.
البته لازمه اضافه کنم که من میخوام براش یک پلاگین در این رابطه بنویسم که وقتی کاربر درخواست کرد برنامه رو به صورت Admin اجرا کنم فعلا اومدم و با تابع ParamStr آدرس فایلی رو که پلاگین من رو لود کرده رو گرفتم حالا نمیدونم چطور اون فایلی رو که برنامه من رو اجرا کرده رو به ویندوز برای دسترسی ادمین اعلام کنم.
البته من در مورد Manifest و ریسورس اطلاعاتی دارم و پروژه خودم رو بلدم تو دلفی توسط Manifest به صورت ادمین اجرا کنم ولی دیگر فایلها رو مانند همینطوری که گفتم نه ممنون میشم کمک کنید تا مشکل رفع بشه . با تشکر

Felony
شنبه 11 تیر 1390, 06:03 صبح
میخواین به برنامه دسترسی Admin بدید که چی کار بتونه انجام بده ؟
اگر مشکل در برخی پلاگین ها هست که با یکسری از توابع API کار میکنند ( مثل TerminateProcess ) که بدون دسترسی نمیتونن کارشون رو انجام بدن ؛ میتونید توسط پلاگین برای پروسه برنامه Privilege بگیرد اگر نه فایل های تولید شده توسط بیلدر کامپایل نمیشن ( MMB یک مفسر داره ) که همون فایل Player.bin در پوشه Player برنامه هست که سورس کد نوشته شده توسط شما به اون Attach میشه ، پس عملا تو خود بیلدر شما به فایل اجرایی اصلی دسترسی ندارید و فایل Player.bin شالوده اصلی ساخته شدن فایل اجرایی برنامه هست .

با این تفاسیر پس میریم سراغ فایل Player.bin که اصل فایل اجرایی ما از اون نشأت میگیره ، فایل Player.bin رو با Notepad یا ... باز کنید و به آخرهای فایل بروید ، با چیزی مثل این رو به رو میشید :


<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
type="win32"
name="MediaChance.MMBuilder.MMBuilder"
/>
<description>MMBuilder</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

خوب ؟ متوجه شدید ؟
به جای پلاگین نوشتن باید برنامه ای بنویسید که Manifest بالا رو در فایل Player.bin تغییر بده یا خودتون یک فایل Player.bin بسازید که Manifest در اون تغییر کرده باشه ( دسترسی Admin بهش اضافه شده باشه ) و برنامه ای بنویسید که فایل Player ی که خودتون ساختید رو با Player پیش فرض بیلدر جایگزین کنه تا برنامه های ایجاد شده توسط MMB دسترسی Admin داشته باشن .

موفق باشید .

loo30fer
شنبه 11 تیر 1390, 12:18 عصر
میخواین به برنامه دسترسی Admin بدید که چی کار بتونه انجام بده ؟
اگر مشکل در برخی پلاگین ها هست که با یکسری از توابع API کار میکنند ( مثل TerminateProcess ) که بدون دسترسی نمیتونن کارشون رو انجام بدن ؛ میتونید توسط پلاگین برای پروسه برنامه Privilege بگیرد اگر نه فایل های تولید شده توسط بیلدر کامپایل نمیشن ( MMB یک مفسر داره ) که همون فایل Player.bin در پوشه Player برنامه هست که سورس کد نوشته شده توسط شما به اون Attach میشه ، پس عملا تو خود بیلدر شما به فایل اجرایی اصلی دسترسی ندارید و فایل Player.bin شالوده اصلی ساخته شدن فایل اجرایی برنامه هست .

با این تفاسیر پس میریم سراغ فایل Player.bin که اصل فایل اجرایی ما از اون نشأت میگیره ، فایل Player.bin رو با Notepad یا ... باز کنید و به آخرهای فایل بروید ، با چیزی مثل این رو به رو میشید :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
type="win32"
name="MediaChance.MMBuilder.MMBuilder"
/>
<description>MMBuilder</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>





خوب ؟ متوجه شدید ؟
به جای پلاگین نوشتن باید برنامه ای بنویسید که Manifest بالا رو در فایل Player.bin تغییر بده یا خودتون یک فایل Player.bin بسازید که Manifest در اون تغییر کرده باشه ( دسترسی Admin بهش اضافه شده باشه ) و برنامه ای بنویسید که فایل Player ی که خودتون ساختید رو با Player پیش فرض بیلدر جایگزین کنه تا برنامه های ایجاد شده توسط MMB دسترسی Admin داشته باشن .

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

Felony
شنبه 11 تیر 1390, 20:02 عصر
باید فایل Player.bin رو بخونید و داخل یک File Stream یا Memory Stream بریزید ، بعد دنبال قسمتی که حاوی متن Manifest هست بگردید و در قسمت مورد نظر متن گرفتن دسترسی Admin رو درج کنید و بعد فایل رو ذخیره کنید .

راه راحت تر هم اینکه خودتون فایل Player.bin رو دستی تغییر بدید و به صورت ریسورس به برنامه الحاق کنید و در برنامه مثلا با کلیک روی دکمه فایل رو از ریسورس خارج کنید و با فایل Player.bin خود بیلدر جایگزین کنید .