لا يمكن نسخ الملف مع الأذونات المناسبة باستخدام FileIOPermission

StackOverflow https://stackoverflow.com/questions/159598

  •  03-07-2019
  •  | 
  •  

سؤال

هذا مقتطف يعمل بشكل جيد إذا أنا أحاول أن أكتب في دليل المستخدم ولكن في أقرب وقت كما كنت في محاولة الكتابة في ملفات البرنامج هو فقط ينفذ بصمت الملف لم يتم نسخها (استثناء).إذا حاولت نسخ ملف في C:\ أو في C:\Windows أنا أمسك UnauthorizedAccessException.

هل تعرف طريقة أخرى للحصول على أذونات الكتابة في هذا الدليل أو أن تجعل من العمل بطريقة أخرى ؟

أي مساعدة موضع تقدير كبير!شكرا

using(FileStream fs=File.Open(source, FileMode.Open)){ }  
try  
{  
    FileIOPermission fp = new FileIOPermission(FileIOPermissionAccess.Write,   
                          AccessControlActions.Change, "C:\\Program Files\\MyPath");  
    fp.Demand();  //<-- no exception but file is not copied
    File.Copy("C:\\Users\\teebot\\Documents\\File.xml","C:\\Program Files\\MyPath\\File.xml",true);  
}  
catch(SecurityExceptions)  
{  
    throw(s);  
} 
catch(UnauthorizedAccessException unauthroizedException)
{
    throw unauthroizedException;
}
هل كانت مفيدة؟

المحلول

إذا كنت تعمل تحت ويندوز فيستا ثم النظام فقط الموجهات يكتب إلى المجلد program files ، وهذا يتم قديمة جدا برنامج الحفاظ على التكوين في دليل البرنامج سوف تستمر في العمل عندما يكون المستخدم غير المشرف (أو تم تمكين UAC).

كل ما عليك القيام به هو إضافة البيان إلى برنامج تحديد المطلوب مستوى الوصول ، ثم النظام تحمل البرنامج الخاص بك Vista-علم وإيقاف كل تلك التوافق بقع.

يمكنك رؤية مثال على ملف البيان على بلدي بلوق في:

http://www.nbdtech.com/blog/archive/2008/06/16/The-Application-Manifest-Needed-for-XP-and-Vista-Style-File.aspx

(التركيز منصب على الحصول على الإصدار الصحيح من الضوابط المشتركة ، ولكن فيستا الأمن الإعلانات أيضا هناك)

نصائح أخرى

لا تكتب في المجلد Program Files.

هذا هو كبير لا لا و لا يسبب مشاكل عندما يأتي اليوم حيث تشغيل التعليمات البرمجية الخاصة بك في ويندوز فيستا أو على جهاز في الشركة حيث فقط للمستخدمين الحصول على الأمان القياسية بدلا من حقوق المسؤول.استخدام المجلد "بيانات التطبيق" بدلا من ذلك.

هل يعمل على ويندوز فيستا؟ إذا كان الأمر كذلك فإنك قد تكون قيد التشغيل في الافتراضية نظام الملفات. هذه هي ميزة في إصدارات 32 بت من ويندوز فيستا والتي تسمح للمستخدم العادي للكتابة إلى أجزاء محمية من نظام الملفات. انها الرقائق المتخذة لخفض الألم من الميزات LUA من ويندوز فيستا.

والنص القصير هو أن نظام التشغيل وخلق نظام الملفات الافتراضي لبعض جذور المحمية (مثل ملفات البرنامج). عندما يحاول غير المشرف الكتابة إلى ذلك، سيتم إنشاء نسخة على تحريره بدلا من الأصلي. عندما محاولات حساب المستخدم الخاص بك للبحث في الملف سوف نرى فإن edit.s حسابات أخرى ترى سوى الأصلي.

نسخة أطول: HTTP: // thelazyadmin.com/blogs/thelazyadmin/archive/2007/04/26/file-system-virtualization.aspx

ومنح أمان الوصول رمز أو تنفي أذونات بك كود . لا يمكن استخدامها لتجاوز الأذونات التي يتم منحها / نفى على المستخدم الحالي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top