PDA

View Full Version : سوال: چگونه میتوان ارور Access is denied را جهت دسترسی به فایل و فلدر برطرف کرد



mehrdad1991h
دوشنبه 28 مرداد 1392, 18:08 عصر
سلام
سوالم من واضحه
من با این کد میام به فایل ها هم دسترسی میدم
public static void SetAccessRule(string File_Dir)
{
System.Security.AccessControl.DirectorySecurity sec = System.IO.Directory.GetAccessControl(File_Dir);
FileSystemAccessRule accRule = new FileSystemAccessRule(Environment.UserDomainName + "\\" + Environment.UserName, FileSystemRights.FullControl, AccessControlType.Allow);
sec.AddAccessRule(accRule);
}
اما این جواب نمیده
فایل و فلدر که میسازم دقیقا کنار برنامه میخوام ذخیره کنم
یا میخوام بازشون کنم
اجازه نمیده به برنامه و خطای دسترسی میده

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

mehrdad1991h
دوشنبه 28 مرداد 1392, 19:54 عصر
کسی نیست کمکی کند ؟
برای دسترسی به فلدر و ... که نباید حتما تحت ادمین اجرا بشه برنامه ؟؟؟؟
پس چه کنم

mehrdad1991h
دوشنبه 28 مرداد 1392, 21:56 عصر
چرا هیچ کسی جواب نمیده
تقریبا غیر ممکنه برنامه نویسان حرفه ای و گرامی که تعدادشون اینجا کم هم نیست بهش برخورد نکرده باشن ....

کدی هم که من استفاده میکنم باید جواب دهد ولی چرا جواب نمیدهد ؟ تازه جالبی اینه که یوزری هم که استفاده میکنه الان ادمینه ولی این اجازه را نمیده که کار کنه....

چه کنم الان
یکی به دادم برسه این را بگه تا تموم بشه کارم
لطفا
سپاس

pesare
سه شنبه 29 مرداد 1392, 10:04 صبح
شما میتونی بصورت دستی بری روی فولدرت و به یوزر جاریت Permision بدی

rezaei_y
سه شنبه 29 مرداد 1392, 10:09 صبح
یا اینکه فایل و پوشه تو توی AppData ایجاد کنی


Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData)

mehrdad1991h
سه شنبه 29 مرداد 1392, 11:49 صبح
شما میتونی بصورت دستی بری روی فولدرت و به یوزر جاریت Permision بدی

یعنی چی ؟ یعنی خودم برم دسترسی بدم ؟ حالا خودم میدونم میرم یوزر که حالیش نمیشه را چیکارش کنم ؟
بعدشم کدی که اون بالا گذاشتم مگه همین کار را نمیکنه ؟


یا اینکه فایل و پوشه تو توی AppData ایجاد کنی


Environment.GetFolderPath(Environment.SpecialFolde r.ApplicationData)

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

سپاس از دوستان
کسی چیز دیگری به ذهنش نمیرسد ؟

barnamenevisjavan
سه شنبه 29 مرداد 1392, 11:53 صبح
برای اینکه پیغام Access Denied نده برنامه رو بصورت Run As Administrator اجرا بکن

mehrdad1991h
سه شنبه 29 مرداد 1392, 12:05 عصر
برای اینکه پیغام Access Denied نده برنامه رو بصورت Run As Administrator اجرا بکن

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

Direlap
سه شنبه 29 مرداد 1392, 12:23 عصر
اینطوری که من میدونم ارور Access is denied مخصوص فولدرهای خاص ویندوز هست که اجازه خوندن اون رو نمیده مگه اینکه دسترسی بهش تعریف کنیم.

حالا من نفهمیدم شما چرا میخواهید دسترسی بدید ؟ یعنی بدون اینکه دسترسی بدید و فولدری ایجاد کنید نمیتونید بهش دسترسی پیدا کنید ؟

mehrdad1991h
سه شنبه 29 مرداد 1392, 12:40 عصر
اینطوری که من میدونم ارور Access is denied مخصوص فولدرهای خاص ویندوز هست که اجازه خوندن اون رو نمیده مگه اینکه دسترسی بهش تعریف کنیم.

حالا من نفهمیدم شما چرا میخواهید دسترسی بدید ؟ یعنی بدون اینکه دسترسی بدید و فولدری ایجاد کنید نمیتونید بهش دسترسی پیدا کنید ؟

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

و اما ادامه ی مشکل من

اقا با
Run as administrator
هم اجرا کردم
ولی برنامه باز هم خطای دسترسی میده .....
واقعا عجیبه ؟؟؟
من دیگه موندم...
لطفا اگه کسی میدونه بگه من چه کنم همه پروژه گیر همین قسمتشه تمام قسمت ها تموم شده فقط گیر همینم....

سپاس

xxnagin
سه شنبه 29 مرداد 1392, 13:24 عصر
سلام
از این کد استفاده کنید

http://www.vbforums.com/showthread.php?616021-Setting-file-and-folder-permissions


string FilePath = "C:\\New folder\\New WinRAR archive.rar";
string UserAccount = My.User.Name;
System.IO.FileInfo FileInfo = new System.IO.FileInfo(FilePath);
FileSecurity FileAcl = new FileSecurity();
FileAcl.AddAccessRule(new FileSystemAccessRule(UserAccount, FileSystemRights.FullControl, AccessControlType.Allow));
//FolderAcl.SetAccessRuleProtection(True, False) 'uncomment to remove existing permissions
FileInfo.SetAccessControl(FileAcl);

pesare
سه شنبه 29 مرداد 1392, 13:47 عصر
والا این تاپیک منم کسی جواب نداد :

چگونه از طریق کد نویسی به یک Pertition از هارد دسترسی Full Control داشته باشیم؟

Direlap
سه شنبه 29 مرداد 1392, 14:05 عصر
1) لطفا کدی که باهاش فولدر رو میسازید و بهش دسترسی پیدا میکنید رو قرار بدید تا منم تست کنم ببینم تو سیستم من هم ارور میده یا نه.(اینو به خاطر این میگم که من تا حالا ارور برای این کارم نگرفتم)

2) من اینطوری فهمیدم آیا درسته ؟ (به خاطر ارور دارید به فولدری که ساختید دسترسی میدید تا بتونید بازش کنید)

3) لطفا این اطلاعات رو هم قرار بدی :
ویندوز
چند بیتی بودن ویندوز
ورژن ویژوال
ورژن دات نت
اسم آنتی ویروس
اسم فایروال
حالت به روز بودن ویندوزتون

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

mehrdad1991h
سه شنبه 29 مرداد 1392, 14:28 عصر
1) لطفا کدی که باهاش فولدر رو میسازید و بهش دسترسی پیدا میکنید رو قرار بدید تا منم تست کنم ببینم تو سیستم من هم ارور میده یا نه.(اینو به خاطر این میگم که من تا حالا ارور برای این کارم نگرفتم)

2) من اینطوری فهمیدم آیا درسته ؟ (به خاطر ارور دارید به فولدری که ساختید دسترسی میدید تا بتونید بازش کنید)

3) لطفا این اطلاعات رو هم قرار بدی :
ویندوز
چند بیتی بودن ویندوز
ورژن ویژوال
ورژن دات نت
اسم آنتی ویروس
اسم فایروال
حالت به روز بودن ویندوزتون

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

1 - مگه چند مدل میشه فلدر ساخت ؟ به صورت عادی دیگه...
اقا منم دریافت نمیکردم ولی نمیدونم چی شد تو این پروزه اینجوری شده اجازه دسترسی داده نمیشود
(الان هم فلدر را با برنامه نمیسازم با ستاپ ساز ویژوال استودیو فلدر را انداختم توش ایجادش کردم دیگه.. (با درگ دراپ فلدر اصلی)
بعد دیدم یوزر خطا داره همون فلدر را کپی کردم کنار پروژه خودم دیدم خودم هم خطا دارم
دیگه هر کاری کردم درست نشد...
2 - بله ، درست فهمیدید ، به فلدر و فلدر ی که برنامه داخلشه و فایلی که قراره باز بشه به همه دسترسی میدم دونه دونه به خاطر همون ارور
3 -
ویندوزی که تست کردم : 7 - 8
نسخه 64 بیتی
ویژوال استودیو 2010
دات نت 4
انتی ویروس ندارم رو ویندوز 7 رو ویندوز 8 انتی ویروس خود ویندوز هست
ویندوز 7 اصلا اپدیت نشده ویندوز 8 دقیقا و کاملا بروز هست
فایروال در ویندوز 7 غیر فعال و در ویندوز 8 فعال (از خود ویندوز)

دیگه چی بگم ؟

مکان هایی که فایل را گذاشتم توش و تست کردم : فلدر داکیومنت که خود ویژوال به صورت پیش فرض اونجا ذخیره میکنه
و سایر درایو ها در روت درایو یا با یک فاصله از روت (یک پوشه در درایو ایجاد کرده و در ان)

متشکرم

Direlap
سه شنبه 29 مرداد 1392, 15:49 عصر
من خودم شک کردم واسه همین یه تستی زدم بدون مشکل فولدرو ایجاد کرد و حذفش کرد

بدون شک یه راه که به نظرم میاد اینه که کدهایی که با فولدر کار می کنید رو کامنت کنید و مرحله به مرحله اضافه کنید. یعنی از طریق کدنویسی فقط فولدر رو ایجاد کنید و .....

اصلا ببینید بدون مشکل این کد پایینی اجرا میشه ؟


System.IO.Directory.CreateDirectory(Application.St artupPath+"\\TestFolder");

mehrdad1991h
سه شنبه 29 مرداد 1392, 17:23 عصر
به فایل هایی که کنار خود برنامه هستن دسترسی داره ولی یه فلدر جدید کنار برنامه ایجاد میکنم و فایل را میخوام داخلش ذخیره کنم میگه نمیتونی...>!!!!!!

barnamenevisjavan
سه شنبه 29 مرداد 1392, 20:18 عصر
فک کنم فولدر شما توی درایو ویندوز باشه ببینید فقط فولدر های خاص نیستش گاهی اوقات فولدرهای معمولی هم این خطا رو میده که علتش هم بنظرم اینه که اون فولدر توی درایو ویندوز هستش شما روی یه درایو دیگه تستش بکن اگرم میتونی همین بخش پروژت رو بصورت جدا بنویس و بزار اینجا بهتر راهنماییت کنیم

mehrdad1991h
چهارشنبه 30 مرداد 1392, 15:00 عصر
فک کنم فولدر شما توی درایو ویندوز باشه ببینید فقط فولدر های خاص نیستش گاهی اوقات فولدرهای معمولی هم این خطا رو میده که علتش هم بنظرم اینه که اون فولدر توی درایو ویندوز هستش شما روی یه درایو دیگه تستش بکن اگرم میتونی همین بخش پروژت رو بصورت جدا بنویس و بزار اینجا بهتر راهنماییت کنیم

دوستان یه سوال عجیب
ایا مخفی بودن فایل و فلدر در دسترسی به اون فایل و فلدر محدودیتی ایجاد میکنه ؟
من با ویژوال استودیو اومده بودم فلدر را مخفی کرده بودم که موقع نصب فلدر مخفی باشه و نشونش ندهد فقط وقتی لازمه یوزر ببینه فلدر را باز کنه و نشون بدهد
که این مشکل پیش اومده بود و دسترسی بهم نمداد
ولی الان اومدم فلدر معمولی گذاشتم و فایل را هم معمولی گذاشتم
دسترسی برقرار شد

الان مشخص شده مشکل این بوده که فلدر مخفیه و دسترسی بهش نمیداد بهم
حالا میخوام بدونم چرا ؟؟؟
چگونه میشه به فلدر مخفی دسترسی پیدا کرد پس ؟
ایا مشکل وقتی پیش میاد که ستاپ ساز ویژوال استودیو مخفی میکنه فلدر را یا کلا برای همه ی فلدر های مخفی این مشکل هست ؟

سپاس

Direlap
چهارشنبه 30 مرداد 1392, 15:05 عصر
خوب اینو چرا از اول کامل توضیح نمیدادید ؟

فکر ماها کجاها که نرفت.


یا کلا برای همه ی فلدر های مخفی این مشکل هست ؟

اینم خودتون تست کنید و نتیجشو اینجا قرار بدید تا بقیه هم بتون ازش استفاده کنن.

barnamenevisjavan
پنج شنبه 31 مرداد 1392, 08:45 صبح
دوستان یه سوال عجیب
ایا مخفی بودن فایل و فلدر در دسترسی به اون فایل و فلدر محدودیتی ایجاد میکنه ؟
من با ویژوال استودیو اومده بودم فلدر را مخفی کرده بودم که موقع نصب فلدر مخفی باشه و نشونش ندهد فقط وقتی لازمه یوزر ببینه فلدر را باز کنه و نشون بدهد
که این مشکل پیش اومده بود و دسترسی بهم نمداد
ولی الان اومدم فلدر معمولی گذاشتم و فایل را هم معمولی گذاشتم
دسترسی برقرار شد

الان مشخص شده مشکل این بوده که فلدر مخفیه و دسترسی بهش نمیداد بهم
حالا میخوام بدونم چرا ؟؟؟
چگونه میشه به فلدر مخفی دسترسی پیدا کرد پس ؟
ایا مشکل وقتی پیش میاد که ستاپ ساز ویژوال استودیو مخفی میکنه فلدر را یا کلا برای همه ی فلدر های مخفی این مشکل هست ؟

سپاس

احتمالا وقتی فولدر رو مخفی کردی بصورت فایل سیستمی مخفی کردی.بخاطر همین خطا داده.اگر دقت کنی توی فولدر آپشن ویندوز یدونه گزینه Hidden Folder هستش و یدونه هم Hidden system file and folder که اگر اینو تیک بزنید میشه فایل سیستمی

mehrdad1991h
دوشنبه 04 شهریور 1392, 15:23 عصر
احتمالا وقتی فولدر رو مخفی کردی بصورت فایل سیستمی مخفی کردی.بخاطر همین خطا داده.اگر دقت کنی توی فولدر آپشن ویندوز یدونه گزینه Hidden Folder هستش و یدونه هم Hidden system file and folder که اگر اینو تیک بزنید میشه فایل سیستمی

سلام دوباره :لبخندساده:
برای این که تاپیک به سرانجام رسیده باشه اومدم بگم که :

1 - خودم دستی یا با کد نویسی فایل و فلدر ها را مخفی نکرده بودم
2 - با ستاپ ساز ویژوال استودیو یک گزینه داره که فایل و فلدر ها را میشه مخفیشون کرد با اون مخفی کرده بودمشون
3 - به صورت Hidden system file مخفی نشده اند و کاملا عادی مخفی هستند (به صورت فایل عادی)
4 - نمیدونم مشکل از کجا به وجود میاد ولی دقیقا اگر با ستاپ ساز خود ویژوال استودیو فایل مخفی بشه اجازه و دسترسی به فایل داده نمیشه....

وقت بخیر
سپاس

FastCode
دوشنبه 04 شهریور 1392, 17:25 عصر
تقریبا غیر ممکنه برنامه نویسان حرفه ای و گرامی که تعدادشون اینجا کم هم نیست بهش برخورد نکرده باشن ....
برنامه نویسان حرفه ای که بهشون اشاره کردی میدونن permission به شکلی که شما پیاده سازی کردی و داری بهش اطمینان میکنی کشکه.پس سعی میکنن تا حد امکان ازش دور بمونن.

mehrdad1991h
دوشنبه 04 شهریور 1392, 17:45 عصر
برنامه نویسان حرفه ای که بهشون اشاره کردی میدونن permission به شکلی که شما پیاده سازی کردی و داری بهش اطمینان میکنی کشکه.پس سعی میکنن تا حد امکان ازش دور بمونن.

شما که پیام میزاری کامل بزار
خوب الان شما میخوای به یه فایل دسترسی پیدا کنی بفرمایید چجوری دسترسی پیدا میکنید ؟

FastCode
دوشنبه 04 شهریور 1392, 18:06 عصر
شما که پیام میزاری کامل بزار
خوب الان شما میخوای به یه فایل دسترسی پیدا کنی بفرمایید چجوری دسترسی پیدا میکنید ؟
صد تا راه داره.
میخوای لیست چیزهایی رو که رعایت نکردی رو بهت بگم؟
۱.خود فایل یا هارد دیسکی که اطلاعات توشه هیچ رمزی نداره.
۲.کاربر هیچ رمزی برای دسترسی وارد نمیکنه.
۳.کاربر دسترسی کامل به بوت داره.
۴.کاربر سیستم عامل رمز نداره.
امنیت با همین که Permission رو تغییر میدم و دیگه هیچ کس دستش به اطلاعاتم نمیرسه تامین نمیشه.از نظر من فقط وقتتون رو حروم کردید.