PDA

View Full Version : سوال: عدم دسترسی به فایل در ویندوز سون



hellboyfa
جمعه 18 مرداد 1392, 20:12 عصر
سلام دوستان !

من یه نرم افزار نوشتم رو xp 32 bit. یه فایل txt بغل فایل exe دارم که تنظیماتمو توش ذخیره میکنم.توی xp 32 bit هیچ مشکلی نداره ولی رو سون تست کردم وقتی میخواد تنظیماتو ذخیره کنه ارور Access Denid میده که اجازه دسترسی به فایلمو نمیده میخواستم از اساتید کمک بگیرم میتونن مشکل منو حل کنند ؟

aliagamon
جمعه 18 مرداد 1392, 20:20 عصر
اطلاعات خیلی کمه میشه کد ذخیره تونو بزارین شاید مشکلی چیزی باشه ....:لبخند:
این سوال مثل اینه که برین تعمییر گاه ماشینو نبرین بگین اقا روشن نمیشه......:اشتباه:
احتمالا پشت ادرستون @ بزارین درست بشه اما لطفا کدو قرار بدین

danialafshari
جمعه 18 مرداد 1392, 20:23 عصر
سلام
برنامه رو با Run as Admin اجرا کنید

hellboyfa
جمعه 18 مرداد 1392, 20:34 عصر
من از StremReader و StreamWriter برای Read و Write کردن تو فایل استفاده میکنم اینم کدش :

StreamWriter sw = new StreamWriter(Application.StartupPath + "\\settings.sett");
sw.WriteLine(checkBox1.Checked);
sw.WriteLine(textBox1.text);
sw.WriteLine(textBox1.text);
if (textBox3.Text != "")
{
sw.WriteLine(textBox3.Text);
}
sw.Close();

aliagamon
جمعه 18 مرداد 1392, 20:53 عصر
این کد هیچ مشکلی نداره احتمالا یوزری که داری برنامه رو وا میکنی محدوده با run as administor درست میشه
اگر بازم نشد یه @ پشت ادرس تو استرینگ اضافه کن یعنی اینطوری میشه:
@"\\settings.sett"

abdullah20
جمعه 18 مرداد 1392, 21:25 عصر
همون طور که دوستان گفتند وقتی نرم افزار را در درایو c نصب کنید باید تحت ادمین اجرا بشه
ولی اگر نمیخواید برنامتون را تحت ادمین اجرا کنید بهتره اولین باری که برنامه اجرا میشه فایل تنظیمات خودتون را در پوشه AppData واقع در C:\Users\username\AppDataکپی کنید

hellboyfa
جمعه 18 مرداد 1392, 21:37 عصر
ممنون از راهنمایی هاتون

ولی من نمیخوام تحت ادمین اجرا بشه

abdullah20 میشه بیشتر توضیح بدید ؟

danialafshari
جمعه 18 مرداد 1392, 23:26 عصر
این کار رو انجلم بده مشکلت حل میشه :

In Visual Studio, right click project -> Add Item -> Choose Application Manifest File ( under General for Visual C#‎‎ items)
Change level :
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

mohabad
جمعه 18 مرداد 1392, 23:38 عصر
دوستان دقیقا کار @ چیه؟ میشه توضیح بدید!

aliagamon
شنبه 19 مرداد 1392, 00:53 صبح
تنها کاری که میکنه علامت \ رو به عنوان استرینگ میخوانه مثلا:

string a = "hello \t world"; lhroji: hello world
string b = @"hello \t world"; khroji hello \t world

abdullah20
شنبه 19 مرداد 1392, 10:10 صبح
ببینید هنگام کاربا رجیستری برای بعضی از مسیرها دسترسی ادمین لازم هسش ولی برای بعضی از مسیرها خیر
در داخل مسیر های پوشه در درایوی که سیستم عامل روی ان نصب هستش هم همین طور است
مثلا پوشه AppData دسترسی ادمین نمیخواد و اکثر نرم افزارها هم از این پوشه برای نگهداری فایلهای خودشون استفاده میکنن
شما از کد زیر استفاده کنید:

string username = System.Environment.UserName;
if (!File.Exists("C:\\Users\\" + username + "\\AppData\\settings.sett"))
File.Copy(System.Environment.CurrentDirectory.ToSt ring() + "\\settings.sett", "C:\\Users\\" + username + "\\AppData\\settings.sett", false);

hellboyfa
شنبه 19 مرداد 1392, 21:58 عصر
تشکر بابت راهنماییتون ولی اینکارو کردم نشد این ارورو میده : Error 1 ClickOnce does not support the request execution level 'requireAdministrator'.