PDA

View Full Version : دسترسی به Database در درایو سی



mehran788
جمعه 20 فروردین 1395, 12:45 عصر
سلام.
خسته نباشید
من برنامه ای نوشتم و قتی فایل نصب اون رو ایجاد می کنم و در سیستم نصب می کنم موقع اجرا خطا می ده چون که بانک اطلاعاتی در درایو سی هست ویندوز اجازه ویرایش رو بهش نمیده و باید من برم و دستی اجازه دسترسی بهش بدم. من چیکار کنم تا نیازی نباشه کاربر پس از نصب مجبور به اینکار شه و برنامه رو نصب و استفاده کنه؟
ممنون

golestan1
جمعه 20 فروردین 1395, 15:17 عصر
چون ویرایش و ذخیره در فایل های درون درایو ویندوز نیاز به اجرا توسط ادمین دارد یا باید برنامه رو نیاز به اجرا توسط ادمین کنید به این صورت
روی پروژه راست کلیک add new item گزینه Application Manifest File رو انتخاب کنید
یه تگ داره به نام requestedExecutionLevel
اونو ویرایش کن به این صورت
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
و روش دوم که از اولی بهتره به نظر من
گذاشتن فایل یا بانک در پوشه اسناد یوزر
اینجوری هیچ محدودیت دسترسی ایجاد نمیشه و چون هر یوزر یه پوشه اسناد برای خودش داره و خیلی راحت به این پوشه دسترسی دارد
کد زیر مسیر یوزر فعال می باشد به راحتی می توانید مسیر بانک یا فایل رو بهش بدین یا در هنگام ستاپ سازی فایل بانک رو در پوشه اسناد قرار دهید
string path = Environment.GetFolderPath(Environment.SpecialFolde r.MyDocuments);

یه نمونه استفاده از کد بالا
using System.IO;

private void Form1_Load(object sender, EventArgs e)
{


if (!File.Exists(path + @"\F.txt") == false)
{

}
else
{
File.WriteAllText(path + @"\F.txt", "", Encoding.UTF8);
button1.Text = "ok";
}
}

abdullah20
جمعه 20 فروردین 1395, 15:28 عصر
اصلا این کارها نیاز نیست
زمان ساخت ستاپ داخل اینستال شیلد میتونید سطح دسترسی ها را تنظیم کنید

mehran788
شنبه 21 فروردین 1395, 06:07 صبح
اصلا این کارها نیاز نیست
زمان ساخت ستاپ داخل اینستال شیلد میتونید سطح دسترسی ها را تنظیم کنید

چطوری میشه اینکارو کرد؟ من گشتم ولی چیزی ندیدم

mehran788
شنبه 21 فروردین 1395, 06:31 صبح
چون ویرایش و ذخیره در فایل های درون درایو ویندوز نیاز به اجرا توسط ادمین دارد یا باید برنامه رو نیاز به اجرا توسط ادمین کنید به این صورت
روی پروژه راست کلیک add new item گزینه Application Manifest File رو انتخاب کنید
یه تگ داره به نام requestedExecutionLevel
اونو ویرایش کن به این صورت
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
و روش دوم که از اولی بهتره به نظر من
گذاشتن فایل یا بانک در پوشه اسناد یوزر
اینجوری هیچ محدودیت دسترسی ایجاد نمیشه و چون هر یوزر یه پوشه اسناد برای خودش داره و خیلی راحت به این پوشه دسترسی دارد
کد زیر مسیر یوزر فعال می باشد به راحتی می توانید مسیر بانک یا فایل رو بهش بدین یا در هنگام ستاپ سازی فایل بانک رو در پوشه اسناد قرار دهید
string path = Environment.GetFolderPath(Environment.SpecialFolde r.MyDocuments);

یه نمونه استفاده از کد بالا
using System.IO;

private void Form1_Load(object sender, EventArgs e)
{


if (!File.Exists(path + @"\F.txt") == false)
{

}
else
{
File.WriteAllText(path + @"\F.txt", "", Encoding.UTF8);
button1.Text = "ok";
}
}

روش اول رو امتحان کردم و برنامه با administrator اجرا شد ولی باز همون مشکل بود. ولی برای روش دوم من از linq استفاده می کنم. چطور می تونم اینطوری بهش ادرس بدم؟

golestan1
شنبه 21 فروردین 1395, 11:41 صبح
ببین دوست عزیز من بیشتر از چند تا پروژه که دارای بانک اطلاعاتی بود کارنکردم و بیشتر با برنامه های کوچک سروکار دارم و از فایل xml یا txt استفاده می کنم چون برنامه بدون بانک حجم برنامه رو پایین میاره و مشکل اتصال و غیره نیز وجود نداره از طرفی وقتی از روش دوم استفاده میکنم خوبیش اینه هر یوزری می تونه تنظیمات خاص خودش رو در پروژه اعمال و در فایلی که در پوشه اسناد خودش وجود داره ذخیره کنه مانند تنظیمات و خیلی از قسمت های برنامه رو
اما در مورد مشکل شما پیشنهاد من اینه شما از طریق فایل راهنما در هنگام نصب به کاربر اطلاع دهی که برنامه رو در درایوی به جز درایو ویندوز نصب کنه چون اگر اطلاعات مثال هزار رکورد ثبت شد و ناخواسته ویندوز سیستم خراب شد و یا کاربر میاد و ویندوز رو عوض میکنه و ممکنه یادش بره که یک کپی از بانک رو در درایو دیگری قرار بده و کل اطلاعات حذف میشه