سؤال

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

شجيتفولديرباث () يمكنني قبول رمز وصول لأي مستخدم أرغب في الحصول على مجلد بيانات التطبيق المحلي له، ولكن للحصول على رمز وصول، يجب عليك توفير كلمة مرور المستخدم.وأيضاً بحسب مستندات وهذا غير مدعوم في نظام التشغيل <= Windows 2000.

مفتاح التسجيل مجلد HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell يحتوي على قيمة AppData، التي تحتوي على موقع مجلد بيانات التطبيق المحلي للمستخدم الحالي...حتى أتمكن من الناحية الفنية من تركيب خلية HKCU لمستخدم محدد والوصول إلى هذه القيمة؛ومع ذلك، يبدو أن Microsoft لا تشجع بشدة على استخدام هذا المفتاح، وقد سمعت أنه قد يكون غير دقيق في بعض الأحيان أيضًا.

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

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

سيكون موضع تقدير أي اقتراحات.

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

المحلول

لا توجد طريقة موثقة للقيام بذلك دون الرمز المميز AFAIK، ولكن أفضل رهان لك هو:

  1. ابحث عن الملف الشخصي:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList (%windir%\Profiles على نظام التشغيل Win9x)
  2. ضبط امتيازات Token لـ SE_RESTORE_NAME
  3. RegLoadKey NTUSER.DAT (USER.DAT على 9x)
  4. استعلام...\CurrentVersion\Explorer\User Shell Folders

لاحظ أن مفتاح التسجيل الصحيح الذي يجب التحقق منه هو مجلدات User Shell وليس مجلدات Shell (وقد يتعين عليك توسيع المسار)، راجع القصة الطويلة والحزينة لمفتاح مجلدات شل للتفاصيل

أريد أيضًا أن أشير إلى أنه إذا أمكن، يجب عليك تخزين البيانات في ملفات البرامج أو المجلدات المشتركة ثم نسخها إلى ملف التعريف عند تشغيل البرنامج لأول مرة لكل مستخدم

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