PDA

View Full Version : Create Manifest for Win7 & Vista UAC if Not Running Under Administrative Rights



hadiaj168
سه شنبه 01 دی 1388, 13:17 عصر
سلام
برنامه من نیاز به مجوز Admin داره تا به درستی کار کنه و به همین دلیل در vista و 7 به مشکل برخورد کردم.
با جستجوهایی که انجام دادم یه راه حل استفاده از مانیفست مناسب بود که بر اساس آموزشی که در اینجا (http://delphi.about.com/od/delphitips2009/qt/delphi-vista-registry-run-on-startup.htm)بود پیش رفتم.
من رو سیستم خودم یه Win7 نصب کردم و برنامه رو امتحان کردم که پیش از اجرا از کاربر میخواد که به برنامه مجوز ادمین بده ، که خوب این همونیه که من میخوام.
اما هدف از زدن این تاپیک اینه که اگه زحمتی نیست دوستانی که win7 Final و یا ویستا دارن یه امتحانی بکنن که آیا تو سیستمشون کار میکنه یا نه (سون من آزمایشیه):قلب:
(فایل exe یک فرم خالیه)

عقاب سیاه
شنبه 05 دی 1388, 10:08 صبح
سلام
من در win7 Final تست کردم از کاربر دسترسی به Admin را می خواهد!!
صحیح کار می کند!

عقاب سیاه
شنبه 05 دی 1388, 10:45 صبح
ببخشید میشه خودتان در رابطه با کار این مانیفست توضیح بدید؟ :متعجب:من که از لینکی که داده بودین چیزی سر در نیاوردم :عصبانی++:اگه سورس همون برنامه ای که برای تست گذاشتید را بگذارید خیلی ممنون میشم:کف:

hadiaj168
شنبه 05 دی 1388, 14:27 عصر
خیلی ممنون از لطفتون.
من خودم چندان در مورد مانیفست اطلاعات ندارم فقط چون با این اشکال تو برنامم مواجه شدم دنبال راه حل گشتم که به اینجا رسیدم.فقط میدونم تو مانیفست یه تگ به نام requestedExecutionLevel هست که اگه مقدار level اون رو به requireAdministrator تغییر بدین برنامه با مجوز ادمین اجرا میشه.
اما سورس برنامه چیز خاصی نداره.اگه میخواد این مانیفست رو به پروژتون اضافه کنید مراحل کار این جوریه.( مانیفستی که تو delphi.about.com بود یه سری اشکالات تایپی داشت)

مانیفست زیر رو تویه فایل تکس کپی کنید و با نام YourProjectName.manifest ذخیره کنید( بجای YourApplicationExeName نام فایل exe خودتون)


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="YourApplicationExeName"
type="win32"/>
<description>elevate execution level</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

حالا یه فایل تکس دیگه باز کنید این رو توش کپی کنید و به نام YourProjectName.RC ذخیره کنید.

1 24 "YourProjectName.manifest"

بازم یه فایل تکس باز کنید:لبخند: این بار اینو توش بنویسید و به نام sampel.bat ذخیره کنید.

brcc32 YourProjectName.RC -foYourProjectName.REC


در پایان {R YourProjectName.REC$} رو به فایل dpr پروژهتون اضافه کنید.
حالا
هرجا YourProjectName بود نام پروژه خودتون رو بزارین.

حالا فایل bat رو اجرا کنید و فایل rec رو بزارید تو پوشه پروژتون.

البته با این کار ظاهر فرم دیگه xp نیست :گیج: بجاش من از مانیفست زیر استفاده کردم

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CodeGear RAD Studio"
version="12.0.3163.16897"
processorArchitecture="*"/>
<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"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

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

vcldeveloper
دوشنبه 07 دی 1388, 16:22 عصر
میشه خودتان در رابطه با کار این مانیفست توضیح بدید؟
مانیفست یک ریسورس در فایل EXE هست که اطلاعاتی درباره برنامه و قابلیت های مورد نیازش به سیستم عامل ارائه میکنه.

gbg
شنبه 12 دی 1388, 02:01 صبح
سلام
من یه برنامه فارسی نوشتم که تو ویندوز 7 اجرا نمیشه و پیام خطایی که عکسش رو ضمیمه کردم میده

vcldeveloper
شنبه 12 دی 1388, 02:15 صبح
من یه برنامه فارسی نوشتم که تو ویندوز 7 اجرا نمیشه و پیام خطایی که عکسش رو ضمیمه کردم میده
خب، چه ربطی به بحث Manifest داشت؟!

اون خطا برای اینه که احتمالا در ویندوزی که دارید استفاده می کنید جداکننده تاریخ چیزی غیر از / هست، یا ترتیب ورود عناصر تاریخ به شکلی که شما در برنامه وارد می کنید نیست.
فرمت تاریخ، و کارکتر جدا کننده عناصر تاریخ و ساعت در یک سیستم را نباید حدس بزنید، یا با پیش فرض های خودتان در نظر بگیرید، بلکه باید آنها را در سیستم مقصد از سیستم عامل دریافت کنید، یا برای ورود از ابزارهای ورود تاریخ استاندارد مثل Date Time Picker استفاده کنید.

gbg
شنبه 12 دی 1388, 13:40 عصر
ممنون من فکر کردم به Manifest ربط داره
آخه این برنامه رو تو xp نوشتم و بدرستی کار میکنه ولی تو win7 اجرا نمی شد

alih4cker
پنج شنبه 26 مرداد 1391, 01:24 صبح
دوستان میشه این کار رو هم تو ویژوال بیسیک 6 انجام داد ؟ یعنی کاری کرد که از کاربر بخواد با سطح دسترسی ادمین اجرا کنه ؟

persia_hrn
چهارشنبه 30 مرداد 1392, 02:20 صبح
سلام دوستان

رفقا من فایل REC رو تهیه کردم و وقتی توی برنامه Callش میکنم برنامه زمانی که ران میشه قفل میکنه ولی تغییرات روی فایل اجرایی اعمال میشه .

البته فهمیدم که باید دلفی رو Run as administrator کنم تا این مشکل حل بشه ، اینو گفتم که اگر کسی همچین مشکلی داشت بدونه چکار کنه .

حالا بریم سر اصل مطلب ، آیا میشه Call کردن فایل REC رو توی کلیک یه Button انجام داد ؟ یعنی اتوماتیک با اجرای برنامه Call نشه .

Mask
چهارشنبه 30 مرداد 1392, 19:41 عصر
call شدن این چنین فایلها جزء دستورات directive خود کامپایلر هست و زیاد مهم نیست کجا قرار داره.

persia_hrn
چهارشنبه 30 مرداد 1392, 21:46 عصر
سلام دوست من

از جوابتون ممنون ، البته متوجه نشدم که منظورتون از "و زیاد مهم نیست کجا قرار داره" چیه ؟ یعنی هرجای برنامه قرار بگیره با اجرای برنامه Call میشه ؟ و کاربر نمیتونه مشخص کنه که چه زمانی Call بشه ؟

Mask
پنج شنبه 31 مرداد 1392, 11:30 صبح
سلام دوست من

از جوابتون ممنون ، البته متوجه نشدم که منظورتون از "و زیاد مهم نیست کجا قرار داره" چیه ؟ یعنی هرجای برنامه قرار بگیره با اجرای برنامه Call میشه ؟ و کاربر نمیتونه مشخص کنه که چه زمانی Call بشه ؟

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

Saeid59_m
جمعه 28 آذر 1393, 14:43 عصر
من در دلفی 7 تمام این کارها رو انجام دادم ولی بازم مشکل حل نشد . (XPMan هم توی پروژه ندارم)
کسی با دلفی 7 اینکار رو انجام داده ؟

Saeid59_m
یک شنبه 30 آذر 1393, 18:06 عصر
توی XE6 خیلی راحته . فقط تو قسمت Propertis پروژه گزینه runtime theme رو روی Use Custom Manifest می ذاری و مسیر فایل مانی فیست رو بهش می دی . همین !

Mask
یک شنبه 30 آذر 1393, 23:30 عصر
میتونید این فایل رو کنار فایل dpr بزارید و در برنامه صداش کنید.
مثلا نمونه زیر :

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};


{$R *.res}
{$R Runas.REC}


begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.



لینک دانلود فایل (http://uplod.ir/l2yw1ijx3o43/Runas.zip.htm)

hadisalahi2
چهارشنبه 14 بهمن 1394, 12:56 عصر
سلام
من قبلا با قفلهای tiny hid کار میکردم و هودش مانیفست این کار رو داشت
اما در نسخه های جدید متاسفانه این حالت رو نداره و باید براش خودم مانیفست run as admin ایجاد کنم
از این مراحلی که دوستان گفتن رفتم اما پیام خطای bad character in Source input رو میده

دقیقا نمیدونم مشکل کجاست
من دقیقا همین کدها رو استفاده میکنم

فایل آپلودی برادر هم لینکش حذف شده
ممنون میشم دوستان یه زحمتی بکشن و ببینن میتونند این موضوع رو جل کنند.

در ضمن فایل مانیفست قفل های tiny Plus رو هم میزارم دوستانی که تخصص دارن ببینند میتونند همین قابلیت اجرا در مد ادمین رو به همین مانیفست اضافه کنند.


138792

hadisalahi2
چهارشنبه 14 بهمن 1394, 13:27 عصر
دوستان ممنون
اما خودم مشکل رو حل کردم
مربوط به این خط بود :


<requestedExecutionLevel level="asInvoker" uiAccess="false"/>

که با تغییر به :


<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>

مشکل مرتفع شد

یا حق