PDA

View Full Version : مشکل در عدم اجازه دسترسی کپی فولدر



HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 16:05 عصر
سلام من میخوام یک فولدر از یک مسیر کپی کنم ولی خطای عدم اجازه دسترسی میده چطور میتونم اجازه دسترسی بدم و کپیش کنم ؟

sohil_ww
یک شنبه 27 مرداد 1392, 16:08 عصر
لطفا قبل از ایجاد تایپیک سرچ بزنید

شما باید برنامه رو تحت admin اجرا کنید اینم لینک آموزش

سرچ 1 (http://www.vsprogramming.com/tutorials/c-tutorials/c-run-application-as-administrator-automatically/)

HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 16:40 عصر
لطفا قبل از ایجاد تایپیک سرچ بزنید

شما باید برنامه رو تحت admin اجرا کنید اینم لینک آموزش

سرچ 1 (http://www.vsprogramming.com/tutorials/c-tutorials/c-run-application-as-administrator-automatically/)

با این کار هم نشد بازم کپی نمیکنه...

دوست عزیز قبل از ایجاد تاپیک سرچ کردم ولی مشکلم حل نشد

HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 17:27 عصر
لطفا راهنمایی کنید سایتهای خارجی خیلی گشتم ولی هر کار کردم نشد...

amir200h
یک شنبه 27 مرداد 1392, 17:27 عصر
احتمالا اون مسیر دسترسیش رو سیستم عاملتون از شما گرفته. به قسمت خصوصیات فولدر برین و از قسمت security دسترسی هارو بر روی Allow قرار بدین

HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 17:41 عصر
احتمالا اون مسیر دسترسیش رو سیستم عاملتون از شما گرفته. به قسمت خصوصیات فولدر برین و از قسمت security دسترسی هارو بر روی Allow قرار بدین

من از فولدر app data یک پوشه میخوام کپی کنم و از طریق خود برنامه میخوام اجازه دسترسی بگیرم و نمیخوام این کار بطور دستی انجام بشه

در ضمن دستی هم رفتم دسترسی دادم بازم اجازه نداد ...

HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 18:47 عصر
دوستان راهنمایی بفرمایید هر کار کردم نشد...

Amin69
یک شنبه 27 مرداد 1392, 19:03 عصر
سلام. من خیلی این موضوع رو پیگیری کردم و فقط به یه جواب منطقی رسیدم: اگه ما بتونیم توی برنامه، یه فولدر رو کپی کنیم، بحث امنیتی و سطح دسترسی ویندوز زیر سوال میره! طبیعی هست که مایکروسافت همچین امکانی رو توی vs نمیذاره که امنیت ویندوزش رو نقص کنه!

HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 19:11 عصر
سلام. من خیلی این موضوع رو پیگیری کردم و فقط به یه جواب منطقی رسیدم: اگه ما بتونیم توی برنامه، یه فولدر رو کپی کنیم، بحث امنیتی و سطح دسترسی ویندوز زیر سوال میره! طبیعی هست که مایکروسافت همچین امکانی رو توی vs نمیذاره که امنیت ویندوزش رو نقص کنه!

یعنی واقعا هیچ راهی نداره ؟

این خیلی برام مهمه جالا چکارکنم ؟

از File.SetAttributes

هم استفاده کردم بازم خطای access denied داد

HOSSEINONLINE7
یک شنبه 27 مرداد 1392, 20:15 عصر
من با این کد :
try
{
// Attempt to get a list of security permissions from the folder.
// This will raise an exception if the path is read only or do not have access to view the permissions.
System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(patch);
MessageBox.Show("ok");
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("no");
}


File.Copy(patch, @"d:\a");


}

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

System.Security.AccessControl.FileSecurity accessdeny = System.IO.File.GetAccessControl(@"C:\Users");
accessdeny.SetAccessRule(new System.Security.AccessControl.FileSystemAccessRule ("Everyone", System.Security.AccessControl.FileSystemRights.Ful lControl, System.Security.AccessControl.AccessControlType.De ny));
System.IO.File.SetAccessControl(@"C:\Users", accessdeny);

ولی باز میگه دسترسی نداره چرا آخه ؟:ناراحت:

aliagamon
یک شنبه 27 مرداد 1392, 21:29 عصر
با Xcopy هم دسترسی نمیده؟
یه تست بکنین ...

مهرداد صفا
یک شنبه 27 مرداد 1392, 22:29 عصر
من با این کد :
try
{
// Attempt to get a list of security permissions from the folder.
// This will raise an exception if the path is read only or do not have access to view the permissions.
System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(patch);
MessageBox.Show("ok");
}
catch (UnauthorizedAccessException)
{
MessageBox.Show("no");
}


File.Copy(patch, @"d:\a");


}

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

System.Security.AccessControl.FileSecurity accessdeny = System.IO.File.GetAccessControl(@"C:\Users");
accessdeny.SetAccessRule(new System.Security.AccessControl.FileSystemAccessRule ("Everyone", System.Security.AccessControl.FileSystemRights.Ful lControl, System.Security.AccessControl.AccessControlType.De ny));
System.IO.File.SetAccessControl(@"C:\Users", accessdeny);

ولی باز میگه دسترسی نداره چرا آخه ؟:ناراحت:

سلام.
دوست عزیز از AccessControlType.Allow استفاده کنید.

HOSSEINONLINE7
دوشنبه 28 مرداد 1392, 18:06 عصر
سلام.
دوست عزیز از AccessControlType.Allow استفاده کنید.

مرسی

چطور ازش استفاده باید بکنم ؟ خطا میده...

HOSSEINONLINE7
دوشنبه 28 مرداد 1392, 18:07 عصر
با Xcopy هم دسترسی نمیده؟
یه تست بکنین ...

تشکر

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

aliagamon
دوشنبه 28 مرداد 1392, 18:35 عصر
اینجا رو نگاه کنین:
http://barnamenevis.org/showthread.php?411485-%DA%A9%D9%BE%DB%8C-%D9%81%D9%88%D9%86%D8%AA&p=1835405&viewfull=1#post1835405

HOSSEINONLINE7
سه شنبه 29 مرداد 1392, 00:28 صبح
اینجا رو نگاه کنین:
http://barnamenevis.org/showthread.php?411485-%DA%A9%D9%BE%DB%8C-%D9%81%D9%88%D9%86%D8%AA&p=1835405&viewfull=1#post1835405

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

آخه یک پنجره داس باز میشه و با اون کپی میشه ...

HOSSEINONLINE7
سه شنبه 29 مرداد 1392, 11:43 صبح
راه دیگه ایی نیست که اون پنجره کامند موقع کپی باز نشه ؟ آخه خیلی ضایعه ...:چشمک:

mehrdad1991h
سه شنبه 29 مرداد 1392, 11:51 صبح
داداش شما بیا از این استفاده کن ببین کارت راه میوفته
من که فعلا گیرم :)

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);
}


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

موفق باشید
تست کن....

HOSSEINONLINE7
سه شنبه 29 مرداد 1392, 18:56 عصر
داداش شما بیا از این استفاده کن ببین کارت راه میوفته
من که فعلا گیرم :)

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);
}


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

موفق باشید
تست کن....

ممنون حل شد ...:تشویق:

شرمنده فقط یک سوال دیگه دارم :

من میخوام عملیات کپی شدن را توی Progressbar نشون بدم و چون که برای عملیات کپی شدن یک تابع جدا نوشتم برای اضافه به مقدار Progressbar توی تابع بهش دسترسی ندارم ( نمیدونم چرا ) و به خاطر همین اومدم هر لحظه سایز فولدر مقصد که داره توش کپی میشه را اندازه گرفتم و فرستادم به تابع اصلی تا اونجا به مقدار Progressbar اضافه کنه ولی 1 مشکل هست :

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

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


اینم کدی که نوشتم خودتون ببینید :
static string CopyDirectory(DirectoryInfo source, DirectoryInfo destination,string[] dsize)
{

if (!destination.Exists)
{
destination.Create();
}

// Copy all files.
FileInfo[] files = source.GetFiles();
foreach (FileInfo file in files)
{
file.CopyTo(Path.Combine(destination.FullName,
file.Name));
}

// Process subdirectories.
DirectoryInfo[] dirs = source.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
// Get destination directory.
string destinationDir = Path.Combine(destination.FullName, dir.Name);

// Call CopyDirectory() recursively.
CopyDirectory(dir, new DirectoryInfo(destinationDir),dsize);

dsize = System.IO.Directory.GetDirectories(@"d:\a", "*", (System.IO.SearchOption.AllDirectories));
return dsize.Length.ToString();


}
}

به نظرتون چکار کنم ؟

اگر میشد یک جوری به Progressbar توی تابع دسترسی داشته باشم دیگه این مشکلات را نداشتم ...

mehrdad1991h
چهارشنبه 30 مرداد 1392, 00:55 صبح
چرا از بک گراند ورکر و پروگرس بار همزمان نمیای استفاده کنی ؟
راحت تر نیست ؟

HOSSEINONLINE7
چهارشنبه 30 مرداد 1392, 11:04 صبح
چرا از بک گراند ورکر و پروگرس بار همزمان نمیای استفاده کنی ؟
راحت تر نیست ؟

چطوری باید همزمان استفاده کنم ؟ من با بگرند پروگرس آشنا نیستم فقط یک چیزای جزئی ازش میدونم که بعضی پروسس ها را میشه باهاش بدون اینترفیس در پس زمینه اجرا کرد تا بشه پردازش دیگری هم انجام داد ...

سرچ کردم یکسری سورس ازش دیدم ولی منظور شما از استفاده هر دو را نفهمیدم ...

mehrdad1991h
چهارشنبه 30 مرداد 1392, 12:03 عصر
چطوری باید همزمان استفاده کنم ؟ من با بگرند پروگرس آشنا نیستم فقط یک چیزای جزئی ازش میدونم که بعضی پروسس ها را میشه باهاش بدون اینترفیس در پس زمینه اجرا کرد تا بشه پردازش دیگری هم انجام داد ...

سرچ کردم یکسری سورس ازش دیدم ولی منظور شما از استفاده هر دو را نفهمیدم ...

یعنی عمل کپی شدن فایل ها در بک گراند صورت بگیره
و مقدار عملیاتی کع انجام شده در پروگرس بار نمایش داده بشه
(یک بک گراند بزار روی فرمت 3 تا رویداد داره اولی(DoWork) برای زمانی هست که بک گراند شروع به کار میکنه - سومی (Runworkcompleted) برای زمانی هست که عملیات تموم بشه -
دومی هم مربوط به کار شما میشه که وقتی بک گراند داره انجام میشه مقدار پیشرف - یا بهتره بگیم تغییر که در کار کردن صورت میگیره این نشون میده و عملیاتی که داخلش نوشتی را روی فرم انجام میده که اینجا باید بنویسی که پروگرس بار یه مقدار بره جلوتر و.....