GetDirectories اتصل في MSI CustomAction يلقي استثناء الأمان فقط عندما يكون جميع المستخدمين

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

سؤال

لديّ إجراء مخصص أستخدمه لنشر بعض الملفات التي تجلس بجوار MSI في حزمة Handoff. تم تمرير عملي المخصص لمسار MSI عبر معلمة OriginalDatabase وأنا أتحقق من معرفة ما إذا كان هناك مجلد بجواره. لا شيء مجنون للغاية ولكن كان ألمًا في المؤخرة لمعرفة ذلك.

يعمل تثبيت مستخدمين فرديين أو متعددين من الملفات التي يتم نسخها محليًا مثل البطل. يعمل تثبيت مستخدم واحد عند تشغيل setup.exe من مشاركة الشبكة بشكل جيد ولكن عندما أقوم بتثبيت جميع المستخدمين من مشاركة الشبكة ، أحصل على استثناء أمان.

الخط المعني هو:

DirectoryInfo[] subdirectories = workingDirectoryInfo.GetDirectories("Foo");

يعمل الإجراء المخصص مع SecurityAction.Demand لذلك يجب أن أحصل على كل الوصول الذي أحتاجه.

أي مدخلات يمكن لأي شخص تقديمها موضع تقدير كبير.

شكرا ، كيسي

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

المحلول

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

هل لي أن أسأل لماذا لا تكون هذه الملفات في المثبت الخاص بك؟ ألا توجد طريقة يمكنك تضمينها حتى لا تضطر إلى الحصول على الإجراء المخصص؟ وإلا فقد تضطر إلى كتابة إجراء مخصص يكتشف أن OriginalDatabase موجود على حصة الشبكة ومنع التثبيت ما لم ينسخ المستخدم جميع الملفات قبل التشغيل.

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