سؤال

ولدي تطبيق علبة الصغير الذي يريد أن يكتب إلى المجلد الخاص به تحت الدليل ملفات البرنامج. أعرف أن هذا ليس تصميم النهائي وسوف إصلاحه، ولكن أولا أريد أن أفهم كيف يعمل هذا.

وتشغيل هذا على جهاز 32 بت ويندوز فيستا فإنه يكتب الملفات إلى VirtualStore وأنها تعمل تماما كما ينبغي.

ولكن عند تثبيت هذا على جهاز 64 بت ويندوز فيستا وأنا على الفور الحصول على ضرب مع UnauthorizedAccessException لمحاولة الكتابة إلى الدليل ضمن ملفات البرنامج (وملفات البرنامج (x86) و).

ولا يبدو أن إعادة توجيه VirtualStore للعمل على ويندوز فيستا 64 بت. أي أفكار؟

وانها C # التطبيق مكتوبة في Visual Studio 2008 و يمكنني استخدام الكائنات يقوم FileStream أن تستمر تيار إلى القرص.

هل كانت مفيدة؟

المحلول 3

وهكذا أنا فعلا حصلت على هذا العمل من خلال تجميع جميع المشاريع لاستهداف نظام x86. ذلك إلى x64 لا يعمل مع VirtualStore على ويندوز فيستا 64 و لا لا تجميع ل"أي وحدة المعالجة المركزية". وكان لي لتعيينها من أجل حل كامل (في إدارة تكوين)، فقط تعيينها لكل مشروع على حدة لم ينجح.

والوقت لإعادة كتابة باستخدام AppData المجلد أو IsolatedStorage. شكرا لجميع مساعدة!

نصائح أخرى

والحصول على مزيد من المعلومات حول الخطأ منتديات هل تستخدم sysinternals على أدوات لأخطاء التنفيذ / وصول رصد منتديات نلقي نظرة المشاهد حدث للخطأ أيضا.

وكنت للتو إصلاحه الآن. يجب أن لا يكون تم كتابة الاشياء الخاصة بك إلى هذا الدليل على أي حال، فإنه يخالف المبادئ التوجيهية. سوف المنتج الخاص بك لا يعمل عندما يكون هناك العديد من المستخدمين تسجيل الدخول إلى ملقم في نفس الوقت، حتى قبل VISTA.

ويندوز فيستا 64 بت سيكشف أنك التطبيق 32 بت وسيتم توجيه التلقائى محاولاتك في تعديل "ملفات البرنامج" إلى "الملفات إلى x86 برنامج". في الواقع، فإنه يجعل تماما كنت تعتقد أنك تعمل على نظام 32 بت (انظر <لأ href = "http://blogs.msdn.com/oldnewthing/archive/2008/12/22/9244582.aspx" يختلط = "نوفولو noreferrer"> هنا ).

وأظن هناك حماية إضافية في هذه الطبقة مضاهاة من البرامج في محاولة لتغيير الأمور ضمن ملفات البرنامج. أو ربما يتم تعيين قوائم ACL أفضل تحت ويندوز فيستا 64 بت (أو طبقة مضاهاة وهو الأرجح).

وخلاصة القول: لا تفعل ما تفعلونه، وقد كان لمايكروسوفت تقول لنا أن لا يفعل ذلك لفترة طويلة الآن

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