PDA

View Full Version : سوال: مشکل ساخت فایل توسط نرم افزار در ویستا



ostovarit
چهارشنبه 28 مهر 1389, 17:30 عصر
با سلام و خسته نباشید

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

با تشکر

::::::::::::::: به جواب رسید :::::::::::::
با تشکر از جناب موسوی راه حل رو یک بار کامل می نویسم تا دوستانی که مشکل مشابه بنده رو دارند ازش استفاده کنند:

1. فایل manifest ایجاد شده در پوشه Debug رو تغییر نام داده و به فرمت EXEName.manifest در می آوریم.

2. فایل EXEName.manifest را با نت پت باز کرده مقداری که در پایین آمده جایگزین محتوای فایل میکنیم و به جای someExecName اسم فایل exe برنامه رو می زاریم:



<?xml version="1.0" encoding="utf-8" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="someExecName"
type="win32" />
<description>Your Program Description</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo></assembly>


3.سپس طبق راهنمایی جناب موسوی : برای اجرای Manifest Tool یا همون mt از Command Prompt، ابتدا منوی Start رو باز کنید، سپس شاخه Visual Studio رو باز کنید و اونجا، روی Visual Studio Tools کلیک کنید. سپس Visual Studio Command Prompt رو اجرا کنید تا Command Prompt ای که Environment Variable اش Set شده باز بشه، در نتیجه mt قابل اجرا باشه. سپس Command زیر رو تایپ کنید...

mt -manifest YourProgram.exe.manifest -outputresource:YourProgram.exe

توجه داشته باشید در آدرس دهی ها فاصله وجود نداشته باشد ...

فایل exe شما اماده است و در زمان اجرا در ویندوز های ویستا و سون در حالت Run as Administrator اجرا خواهد شد.

با تشکر از همه عزیزان

Amir Oveisi
چهارشنبه 28 مهر 1389, 18:45 عصر
برنامتون رو Run As Administrator کنید. اگر هم در حالت Debug این مشکل رو دارید، Visual Studio رو Run As Administrator کنید و بعد پروژه رو باز کنید و Debug کنید. مشکلتون حل خواهد شد.

موفق باشید

ostovarit
چهارشنبه 28 مهر 1389, 19:52 عصر
برنامتون رو Run As Administrator کنید. اگر هم در حالت Debug این مشکل رو دارید، Visual Studio رو Run As Administrator کنید و بعد پروژه رو باز کنید و Debug کنید. مشکلتون حل خواهد شد.

موفق باشید

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

با روشی که شما گفتید ارور بر طرف شد و نرم افزار کار میکنه ...

حالا من به کاربرم بگم که برای اجرای نرم افزار راست کلیک کن و Run As Administrator بزن یا اینکه راه حلی برای این موضوع وجود داره که اتوماتیک خودش در حالت admin اجرا بشه؟؟؟؟

با تشکر

flash118
چهارشنبه 28 مهر 1389, 21:40 عصر
خوب با فرض این که تنها راه حل باشه شما اول وضعیت کاربر لاگین شده رو بررسی کن و اگه ادمین بود اجرا بشه اگه نه که با یه پیغام مناسب مدیریتش کنید بعدشم برنامه در حالت دیباگ بدون مشکل کار کرده و از مرحله بعدی هم مطمئن هستیم فکر کنم در حال حاضر راه حل خوبی باشه

ostovarit
پنج شنبه 29 مهر 1389, 00:05 صبح
خوب با فرض این که تنها راه حل باشه شما اول وضعیت کاربر لاگین شده رو بررسی کن و اگه ادمین بود اجرا بشه اگه نه که با یه پیغام مناسب مدیریتش کنید بعدشم برنامه در حالت دیباگ بدون مشکل کار کرده و از مرحله بعدی هم مطمئن هستیم فکر کنم در حال حاضر راه حل خوبی باشه

من اصلا متوجه نشدم شما چی گفتی ...

سوال من اینه که راهی داره که نرم افزار از همون ابتدا در حالت run as admin اجرا بشه ...
نرم افزار های دیگه چطور این کار رو انجام دادند؟

تکه کد ؟ تنظیمات ؟ نمونه ؟ لینک ؟ ارائه هر چیزی که بتونه کمک کنه ممنون میشم ...

debugger
پنج شنبه 29 مهر 1389, 09:42 صبح
دوست عزیر منظور دوستمون اینه که موقع اجرا در فرم لود برنامه ات یه کدی بنویس که تشخیص بده یوزری که به ویندوز لاگین کرده ادمین هست یا یوزر معمولی ؟ اگر یوزر معمولی بود یه پیغام نشون بده که برای اجرای برنامه باید با یوزر ادمین وارد شوید و اگر هم با ادمین وارد شده بود . برنامه پیغامی نده و اجرا بشه

در ضمن هیچ راهی هم نداره مگر اینکه با run as administrator بزنه

فقط در صورتی نیاز به انجام این کار نیست که یوزری که وارد شده خودش در حالت ادمین وارد شده باشه

در مورد کد تشخیص یوزر قبلا من یک نمونه واسه xp دیده بودم . فکر کنم سرچ کنی واسه ویستا یا سون هم پیدا خواهی کرد

ostovarit
پنج شنبه 29 مهر 1389, 12:41 عصر
دوست عزیر منظور دوستمون اینه که موقع اجرا در فرم لود برنامه ات یه کدی بنویس که تشخیص بده یوزری که به ویندوز لاگین کرده ادمین هست یا یوزر معمولی ؟ اگر یوزر معمولی بود یه پیغام نشون بده که برای اجرای برنامه باید با یوزر ادمین وارد شوید و اگر هم با ادمین وارد شده بود . برنامه پیغامی نده و اجرا بشه

در ضمن هیچ راهی هم نداره مگر اینکه با run as administrator بزنه

فقط در صورتی نیاز به انجام این کار نیست که یوزری که وارد شده خودش در حالت ادمین وارد شده باشه

در مورد کد تشخیص یوزر قبلا من یک نمونه واسه xp دیده بودم . فکر کنم سرچ کنی واسه ویستا یا سون هم پیدا خواهی کرد

خوب من دفعه اول هست که همچین کاری رو برای اجرای نرم افزار انجام میدم ... پس نرم افزار های دیگه چطور کار میکنند؟! ... log file ها ی نرم افزار های مختلف چطور ایجاد میشن بدون اینکه run as admin شده باشند ؟ من این نرم افزار ها رو run as admin نمیکنم اما هیچ مشکلی هم در اجرا ندارند ... فکر میکنم یک ترفندی باید برای این قضیه باشه ...

.:لطفا مدیران محترم و کاربران دیگر هم تجربشون رو بفرمایند:.

cheshm6k
پنج شنبه 29 مهر 1389, 13:19 عصر
سلام.

http://www.vistaclues.com/always-run-an-application-as-an-administrator

http://www.vistaclues.com/how-to-disable-user-account-control

و......

http://www.enusbaum.com/blog/2007/08/26/how-to-run-your-c-application-as-administrator-in-windows-vista

موفق باشید.

ostovarit
پنج شنبه 29 مهر 1389, 19:48 عصر
مشکلم حل نشده با توجه به لینک اخری که دوستمون گذاشتن فایل manifest ایجاد شده رو rename کردم و به EXEName.manifest تغییر دادم ... بعد هم با نت پد بازش کردم و مقادیر xml که در زیر اومده رو جایگزین کردم و به جای someExecName اسم فایل exe برنامم رو گذاشتم ... بعد هم خطی که در پایین نوشتم رو در Command Promp اجرا کردم اما خطا داد و mt رو به عنوان کامنت نشناخت! ... رفتم تو perapertise برنامم و در قسمت Build Eveent نوشتم باز هم موقع build ارور داد ( ارور 9009) و نشد! ...


مقادیر XML :


<?xml version="1.0" encoding="utf-8" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="someExecName"
type="win32" />
<description>Your Program Description</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo></assembly>
خط execut کردن فایل manifest بغذ از ویرایش :
mt -manifest YourProgram.exe.manifest -outputresource:YourProgram.exe


لطفا راهنمایی کنید ...............................
من فقط همین مشکل رو برای برنامم دارم میخوام برنامم در ویستا و سون run as admin اجرا بشه....

mehdi.mousavi
پنج شنبه 29 مهر 1389, 21:44 عصر
سلام.
برای اجرای Manifest Tool یا همون mt از Command Prompt، ابتدا منوی Start رو باز کنید، سپس شاخه Visual Studio رو باز کنید و اونجا، روی Visual Studio Tools کلیک کنید. سپس Visual Studio Command Prompt رو اجرا کنید تا Command Prompt ای که Environment Variable اش Set شده باز بشه، در نتیجه mt قابل اجرا باشه. سپس Command مزبور رو تایپ کنید...

موفق باشید.

پاورقی: اگر بعد از اینکار بازهم پیام خطایی گرفتید، پیام خطا رو اینجا پست کنید.

cheshm6k
جمعه 30 مهر 1389, 09:52 صبح
با توجه به لینک اخری که دوستمون گذاشتن فایل manifest ایجاد شده رو rename کردم و به EXEName.manifest تغییر دادم . چرا؟؟؟؟؟؟؟؟؟؟؟
منظورشو بد متوجه شدید. اون با این فرض که یه فایل دیگه درست کردید، گفته حالا اسمشو تغییر بدید به ...............

نیازی به این کارم نیست . دو تا راه پیشنهاد داده که راه دوم رو استاد موسوی فرمودن. واسه راه اولم کافیه فایل manifest رو با VS باز کنی و تغییراتو اعمال کنی و بعد save کنی. ( با درگ فایل manifest، روی VS هم، باز میشه )

موفق باشید.