PDA

View Full Version : تیک زدن Run as admin در ویندز ویستا و 7



h_mohamadi
یک شنبه 05 اردیبهشت 1389, 19:35 عصر
سلام دوستان
می خواستم بدانم چگونه می توانم با دلفی تیک Run as admin در ویندز ویستا و 7 را برای یک برنامه بزنم حالا یا با دلفی و یا اگر می شود در اینستال شیلد اگر ویندوز بالاتر از xp بود این کار انجام شود.
طبق عکس زیر

Delphi Coder
یک شنبه 05 اردیبهشت 1389, 22:28 عصر
اگه منظورتون اینه که چطوری می تونید کاری بکنید که برنامتون با privilege ادمین اجرا بشه فقط کافیه یه manifest به resource برنامتون اضافه کنید.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
processorArchitecture="X86"
name="DelphiApplication"
version="1.0.0.0"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

h_mohamadi
دوشنبه 06 اردیبهشت 1389, 07:52 صبح
اگه منظورتون اینه که چطوری می تونید کاری بکنید که برنامتون با privilege ادمین اجرا بشه فقط کافیه یه manifest به resource برنامتون اضافه کنید.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
processorArchitecture="X86"
name="DelphiApplication"
version="1.0.0.0"/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="*"/>
</dependentAssembly>
</dependency>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>


ممنونم می شود به من کمی بیشتر کمک کنید جون من مثل شما استاد نیستم و مبتدی هستم.
می شود یک نمونه برنامه بگذارید که من بفهمم این دستور باید کجا گذاشته شود

vcldeveloper
سه شنبه 07 اردیبهشت 1389, 18:58 عصر
ممنونم می شود به من کمی بیشتر کمک کنید جون من مثل شما استاد نیستم و مبتدی هستم.ببینید، باید خودتون پیگیر مشکل خودتون باشید، و از سرنخ هایی که بهتون داده میشه، به خوبی استفاده کنید. دو سرنخ در پست قبلی به شما داده شد؛ Manifest و Resource.

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

اما به جای این پیگیری ها، 2 پست در این تاپیک، و 2 پست هم در یک تاپیک دیگه ارسال کردید، که کسی بیاد این کار رو براتون انجام بده.

Manifest یک متن XML هست، مثل همونی که در پست 2 تاپیک می بینید. این متن برخی از پیش نیازهای یک برنامه را برای ویندوز مشخص میکنه. این متن میتونه به دو صورت به ویندوز داده بشه، یک حالت اینه که Manifest در داخل فایل EXE به صورت یک Resource ذخیره بشه. حالت دوم هم اینه که Manifest با نام فایل EXE و پسوند manifest در پوشه ایی که فایل EXE قرار داره، قرار داده بشه، مثلا اگر فایل شما اسمش Project1.exe هست، Manifest آن را به صورت یک فایل با نام Project1.manifest در کنارش ایجاد کنید.

به طور عادی نسخه های جدید دلفی (مثل دلفی 2009 و 2010) برای شما Manifest مناسب را به صورت Resource می سازند، و به فایل EXE الصاق می کنند. اما این Manifest الصاق شده سطح دسترسی برنامه را بر روی Admin تنظیم نمیکنه. یک راه برای شما این هست که فایل EXE تولید شده خودتان را با یک نرم افزار کار با Resourceها، مثل XN Resource Editor باز کنید، و Resource مربوط به Manifest را طوری تغییر بدید که در قسمت requestedExecutionLevel، آن level="requireAdministrator" درج بشه.

حمید محمودی
سه شنبه 07 اردیبهشت 1389, 19:33 عصر
یک راه برای شما این هست که فایل EXE تولید شده خودتان را با یک نرم افزار کار با Resourceها، مثل XN Resource Editor باز کنید، و Resource مربوط به Manifest را طوری تغییر بدید که در قسمت requestedExecutionLevel، آن level="requireAdministrator" درج بشه.


آیا راهی هست که وقتی برناممون رو کامپایل میکنیم به طور پیش فرض همین طور باشه و نیاز نباشه بطور دستی اینکارو بکنیم؟؟

vcldeveloper
سه شنبه 07 اردیبهشت 1389, 23:49 عصر
آیا راهی هست که وقتی برناممون رو کامپایل میکنیم به طور پیش فرض همین طور باشه و نیاز نباشه بطور دستی اینکارو بکنیم؟؟
خودِ دلفی همچین گزینه ایی به شما نمیده. ولی یادم هست یکی دو سال قبل، یک برنامه نویس عرب یک IDE Expert برای این منظور نوشته بود، که میشد با استفاده از آن، Manifest یک پروژه رو ویرایش کرد.. اسم خودش و IDE Expertاش یادم نیست.
البته احتمالا اگر خودتون فایل .Res پروژه رو ویرایش کنید، هم بتونید به این نتیجه برسید.