«الجهاز نفسه» ليس بيئة التنفيذ نفسها ── حدود المستخدم التي تفصل AppData وHKCU وDPAPI وبيانات الاعتماد

· آخر تحديث: · · Windows, DPAPI, السجلّ, AppData, بيانات الاعتماد, Task Scheduler

سجل التعديلات (النسخة الأولى، نُشرت في 28 Aug، 2026)
النشر الأول

يقرأ التطبيق ملفّ إعداده عند التشغيل من مستكشف الملفّات، لكن Task Scheduler يبلّغ «غير موجود». حوّله إلى خدمة فلا يعود قادراً على فكّ تشفير كلمة المرور المحفوظة. المتصفّح على مكتبك مسجَّل الدخول، لكن في CI يعود إلى شاشة تسجيل الدخول.

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

سؤال هذه المقالة: لماذا ينكسر التطبيق ما إن يُحوَّل إلى مهمّة أو خدمة أو CI دون تغيير الشيفرة؟ إن أردت التحقيق من العَرَض فانتقل من الجدول التالي إلى الموضع المناسب.

العَرَض ما تقارنه أوّلاً موضع القراءة
ملفّ إعداد أو أمر غير موجود مستخدم التنفيذ، والمسار الفعلي لـ AppData، ومتغيّرات بيئة المستخدم AppData ومتغيّرات البيئة
قيمة سجلّ كان يُفترض كتابتها غير موجودة خلية المستخدم التي يشير إليها HKCU HKCU
الملفّ يُقرأ لكن لا يمكن فكّ تشفير السرّ نطاق DPAPI وصاحب المفتاح الرئيسي DPAPI
لا يمكن توريث حالة تسجيل دخول المتصفّح مستخدم التنفيذ، وملفّ التعريف، والمفتاح المحمي بـ DPAPI ملفّ تعريف المتصفّح
لا يمكن استخدام بيانات اعتماد أو شهادات محفوظة خزينة حساب التنفيذ ومخزن الشهادات، ونوع تسجيل دخول المهمّة بيانات الاعتماد والشهادات
محرّك Z: غير موجود عند التشغيل كمسؤول الرمز قبل الترقية وبعدها وجلسة تسجيل الدخول ترقية UAC
تريد فحصاً شاملاً قبل الترحيل الوجهات المعتمدة حسب شكل التشغيل والإعداد قائمة تحقّق حسب شكل التشغيل، إجراء التحقيق

مقدّمات هذه المقالة

البند المحتوى
القرّاء المستهدفون المطوّرون الذين يحوّلون تطبيقات أعمال إلى خدمة أو مهمّة أو CI، ومسؤولو التشغيل الذين يحقّقون في «يعمل على المكتب لكن»
البيئة المفترضة Windows 10/11. تُشغَّل شيفرة التحقّق على PowerShell 5.1 فما بعده
الصعوبة متوسّط

1. الخلاصة أوّلاً

وحدة التقسيم الأساسية لبيئة تنفيذ Windows ليست الجهاز بل رمز الوصول وSID، أي «من يعمل البرنامج باسمه». ينتمي AppData وHKCU ومفتاح DPAPI وملفّ تعريف المتصفّح وبيانات الاعتماد إلى بيئة ذلك المستخدم.

الإعدادات وحالة تسجيل الدخول التي جهّزتها بنفسك بعد تسجيل دخول تفاعلي لا تُورَّث تلقائياً إلى SYSTEM أو حساب خدمة آخر. مجال وضع بيانات الجهاز كلّه هو ProgramData وHKLM، والمشاركة تتطلّب أيضاً تصميم صلاحيات وصول.

عالمان داخل الجهاز نفسهيشارك الجهاز نفسه HKLM وProgramData فقط، ولعالم SID الخاص بك وعالم SID آخر كلّ منهما AppData وخلية سجلّ ومفتاح DPAPI خاصّان، ولا يرى أحدهما الآخر عبر حدود المستخدمحدود المستخدم: لا يرى أحدهما الآخرالجهاز نفسهمشترك: HKLM وProgramDataعالم SID الخاص بكعالم SID آخر (SYSTEM وغيره)AppData وHKCU ومفتاح DPAPIAppData آخر وخلية أخرى ومفتاح آخر

الشكل 1: حتّى على الجهاز نفسه، إن اختلف مستخدم التنفيذ صارت AppData والسجلّ والمفاتيح شيئاً آخر.

لكن تساوي SID لا يعني حتماً البيئة نفسها. أكّد أيضاً نوع تسجيل دخول المهمّة، وتحميل ملفّ التعريف في IIS، وفرق جلسة تسجيل الدخول بترقية UAC. ترقية الحساب نفسه لا تجعل HKCU والخزينة لمستخدم آخر؛ المهم فصل الحدود التي تتغيّر.

فيما يلي مستخدم التنفيذ كفرضية (الفصل 2)، والحدود الخمس (الفصول 3–7)، والفحص حسب شكل التشغيل (الفصل 8)، والتصميم والتحقيق (الفصل 9).

في المخطّط، يشير الخطّ المتّصل إلى علاقة قائمة دائماً، ويشير الخطّ المتقطّع إلى علاقة مشروطة (شروط قيامها مذكورة في شرح كلّ علاقة في الصفحة التفصيليّة). القائمة الكاملة للعلاقات (المجموع 33، مع الأدلّة ودرجة اليقين) وتعريفات المفاهيم الرئيسة مجمّعة في صفحة تفاصيل خريطة المعرفة (باليابانية). البيانات: JSON-LD / Turtle

2. الفرضية: «من يعمل باسمه» يقرّر كلّ شيء

2.1 أكّد SID والرمز لا اسم المستخدم

معرّف Windows للمستخدم ليس اسم المستخدم بل SID (معرّف الأمان). تحمل العملية رمز وصول، ويتضمّن SID مستخدم التنفيذ. عند التفكير في حكم ACL للملفّ، وكيان السجلّ، ومفتاح التشفير، هذا الفاعل هو نقطة الانطلاق.

لأوّل فحص استخدم whoami /user. لا نتيجة طرفك أنت، بل النتيجة في بيئة التنفيذ التي تحدث فيها المشكلة.

> whoami /user

معلومات المستخدم
----------------

اسم المستخدم      SID
=============== =============================================
desktop\you     S-1-5-21-3623811015-3361044348-30300820-1001

C:\Users\you كيان ملفّ تعريف المستخدم المرتبط بذلك SID. يتضمّن الملفّ مجموعات مجلّدات مثل AppData وخلية سجلّ المستخدم NTUSER.DAT. يُنسَخ من الملفّ الافتراضي عند أوّل تسجيل دخول، لذا يبدأ ملفّ تعريف مستخدم آخر من حالة أوّلية مختلفة عن البيئة التي رتّبت إعداداتها.1

التدفّق من مسار التشغيل إلى الملفّأيّاً كان المسار، نقر مزدوج أو Task Scheduler أو خدمة أو IIS، تحمل العملية SID رمز الوصول، وتصير مجموعة ملفّ التعريف المرتبطة بذلك SID بيئة التنفيذنقر مزدوجرمز العملية (SID)Task Schedulerخدمة وIISمجموعة الملفّ المرتبطة بـ SIDSID آخر يعني ملفّ تعريف آخر بحالة أوّلية

الشكل 2: مسار التشغيل يقرّر ملفّ تعريف أيّ SID تتحمّله العملية.

2.2 لحسابات الخدمة أيضاً بيئة كلّ منها

في Windows حسابات مضمَّنة تعمل دون تسجيل دخول بشري. لكلّ منها بيئة تنفيذ مستقلّة.2

الحساب SID مرجع الملفّ والسجلّ
SYSTEM (LocalSystem) S-1-5-18 الملفّ تحت C:\Windows\System32\config\systemprofile. يرتبط HKCU بالمستخدم الافتراضي3
LocalService S-1-5-19 تحت C:\Windows\ServiceProfiles\LocalService. يملك مفتاحاً فرعياً في HKEY_USERS4
NetworkService S-1-5-20 تحت C:\Windows\ServiceProfiles\NetworkService. مثل LocalService، يملك ملفّه وخلية خاصّة4
IIS AppPool\<الاسم> S-1-5-82-… معرّف خاص بالمجمّع. الملفّ لا يُحمَّل افتراضياً5

فرق مسار التشغيل، النقر المزدوج وTask Scheduler والخدمة وIIS، يصل إلى فرق بيئة أيّ فاعل تستخدم. لا تفترض أن الإعدادات والمفاتيح وبيانات الاعتماد التي جهّزتها بتسجيل دخولك التفاعلي موجودة في وجهة التنفيذ تلك أيضاً.

2.3 ثلاثة شروط تؤكّدها بعد «المستخدم نفسه»

الشرط المؤكَّد مثال يظهر فيه الفرق
نوع تسجيل الدخول في تسجيل دخول S4U للمهمّة لا تُحفَظ كلمة المرور ولا يُوصَل إلى الشبكة أو EFS6
تحميل الملفّ في IIS يغيّر loadUserProfile ما إذا أمكن استخدام AppData وخلية المستخدم7
جلسة تسجيل الدخول والترقية حتّى مع SID نفسه قد لا يظهر محرّك شبكة من عملية ترقّت بـ UAC89

لا تنتهِ بتأكيد SID؛ رتّب «ما الذي يختلف حتّى على الحساب نفسه» بهذه الثلاثة. المهمّات في الفصل 8، وIIS في الفصلين 4–5، والترقية في الفصل 7.

3. الحدود 1: AppData ── متغيّر البيئة نفسه يشير إلى مكان آخر

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

3.1 تقسيم AppData والفرق حسب مستخدم التنفيذ

AppData مجلّد تحت ملفّ تعريف المستخدم. تنقسم الاستخدامات كما يلي.10

المجال الاستخدامات الرئيسة
%APPDATA% (Roaming) إعدادات مستخدم تريد أن تتبع نقل الملفّ
%LOCALAPPDATA% (Local) بيانات أو ذاكرة تخزين مؤقّت محلّية للجهاز
AppData\LocalLow بيانات لعمليّات بمستوى سلامة منخفض

حتّى إن فتحت %APPDATA% بالشيفرة نفسها، تتغيّر الوجهة حسب مستخدم التنفيذ.

مستخدم التنفيذ مثال مكان البحث عن ملفّ الإعداد
المستخدم A C:\Users\a\AppData\Roaming\MyApp
SYSTEM AppData تحت systemprofile

الملفّ الذي حفظه المستخدم A غير موجود في جهة SYSTEM. خطأ «ملفّ الإعداد غير موجود» وحده يصعب فهمه، لذا في التحقيق انظر إلى المسار الذي فُتح فعلاً لا اسم متغيّر البيئة.

حلّ %APPDATA% يتغيّر حسب المستخدمحتّى عندما تفتح الشيفرة نفسها %APPDATA%، إن كان مستخدم التنفيذ أنت حُلّ تحت C:\Users، وإن كان SYSTEM حُلّ تحت systemprofile حيث لا يوجد ملفّ إعدادكأنتSYSTEMالشيفرة نفسها: افتح %APPDATA%من مستخدم التنفيذ؟C:\Users\you\AppData\RoamingAppData تحت systemprofileالملفّ الذي يُفترض وضعه غير موجود

الشكل 3: متغيّر البيئة لا يكذب، لكن وجهة الحلّ تتغيّر بالرمز.

3.2 لـ PATH أيضاً فرق لكلّ مستخدم

متغيّرات بيئة النظام مشتركة للجهاز، لكن متغيّرات بيئة المستخدم لكلّ مستخدم. إن لم يجد أمر أضفته إلى PATH الخاص بك من خدمة، أكّد هذا الفرق أيضاً.

يُقرَّر مكان الحفظ بـ «من يقرأ البيانات». إعداد ذلك المستخدم فقط إلى AppData، وبيانات يشترك فيها كلّ المستخدمين أو الخدمات تحت %ProgramData% مع تصميم ACL للأخيرة. لاختيار أدق انظر «أين ينبغي وضع البيانات المحلّية لتطبيق Windows».

وجهة الحفظ يقرّرها القارئالبيانات التي يقرأها ذلك المستخدم فقط تُوضَع في AppData أو HKCU، والبيانات المشتركة بين كلّ المستخدمين أو الخدمات في ProgramData أو HKLM، والأخيرة تترافق مع تصميم ACLذلك المستخدم فقطكلّ المستخدمين والخدماتمن يقرأ تلك البياناتAppData وHKCUProgramData وHKLMأعد النظر إن حوّلت لاحقاً إلى خدمةصمّم صلاحية الكتابة وACL

الشكل 4: «لا يُقرأ بعد التحويل إلى خدمة» نتيجة تخطّي هذا الفرع عند التصميم.

4. الحدود 2: HKCU ── «المستخدم الحالي» يتغيّر حسب المستدعي

العَرَض النموذجي أن معلومات الترخيص التي كتبها المثبّت لا تُوجد من الخدمة. حتّى إن كان اسم جهة الكتابة والقراءة كليهما HKCU فليسا بالضرورة الكيان نفسه.

4.1 HKCU اسم بديل لخلية المستخدم

HKEY_CURRENT_USER (HKCU) ليس خلية مستقلّة بل اسماً بديلاً يُحوَّل إلى الكيان حسب مستخدم المستدعي. في عملية مستخدم عادية يشير إلى مفتاح ذلك SID تحت HKEY_USERS. محتواه هو NTUSER.DAT المحمَّل عند تسجيل الدخول.1

الاستثناء HKCU\Software\Classes، وكيانه ملفّ خلية آخر UsrClass.dat. يُوضَع هذا الملفّ تحت %LOCALAPPDATA%\Microsoft\Windows.11

يرتبط HKCU لـ LocalSystem بالمستخدم الافتراضي (HKEY_USERS\.DEFAULT). إن كتب مثبّت شُغِّل بحساب مسؤول إلى HKCU وقرأته خدمة SYSTEM اختلفت الوجهة.3

كيان الاسم البديل HKCUعندما يفتح التطبيق HKCU يُحوَّل في عمليتك إلى مفتاح SID الخاص بك تحت HKEY_USERS، وفي عملية LocalSystem إلى مفتاح المستخدم الافتراضي، فتختفي القيمة التي كتبها المثبّتعمليتكعملية SYSTEMشيفرة التطبيق: افتح HKCUHKCU اسم بديل للكيانSID الخاص بك تحت HKEY_USERSHKEY_USERS\\.DEFAULTالقيمة التي يُفترض كتابتها غير موجودة

الشكل 5: حتّى مع الاسم نفسه HKCU، إن تغيّر المستخدم تغيّر الكيان الذي تقرأ منه وتكتب إليه.

ضع إعدادات الجهاز كلّه في HKLM. لا توصي Microsoft بالوصول إلى HKCU من خدمة. إن احتجت قراءة إعدادات مستخدم فتمثّل ذلك المستخدم ثم استخدم RegOpenCurrentUser.12

4.2 أكّد أيضاً ما إذا حُمِّل الملفّ

إضافة إلى حساب التنفيذ، قد يصير ما إذا حُمِّل الملفّ مشكلة أيضاً.

يعمل مجمّع تطبيقات IIS افتراضياً دون تحميل ملفّ تعريف المستخدم. بتمكين loadUserProfile يصير ممكناً استخدام AppData والخلية تحت الملفّ.7 يرتبط هذا الإعداد أيضاً بوجهة حفظ مفاتيح DPAPI وASP.NET Core Data Protection في الفصل التالي.

إعداد المهمّة «عدم حفظ كلمة المرور» يُؤكَّد على حدة كـ قيد نوع تسجيل الدخول. حتّى مع تحديد المستخدم نفسه لا تصل S4U إلى الشبكة أو EFS. فرق التكوين المفصَّل ملخَّص في الفصل 8.6

5. الحدود 3: DPAPI ── التشفير معلَّق بـ «مفتاح المستخدم»

مقابل مشكلة AppData وHKCU «مكان البحث مختلف»، يحدث في DPAPI أن الملفّ يُقرأ لكن لا يمكن فكّ تشفير المحتوى. مثال التحويل إلى خدمة لتطبيق يستخدم كلمات مرور محفوظة فيصير CryptographicException هذا.

5.1 إن اختلف صاحب المفتاح الرئيسي تعذّر فكّ التشفير

DPAPI (Data Protection API) وظيفة تشفير يقدّمها Windows للتطبيقات. باستدعاء CryptProtectData أو ProtectedData.Protect في .NET يمكن حماية البيانات دون أن يحمل التطبيق مفتاح التشفير في الشيفرة.13

لكن ذلك لا يلغي الحاجة إلى مفتاح. يُستخدم مفتاح رئيسي يديره نظام التشغيل. في نطاق CurrentUser يُحمى مفتاح رئيسي لكلّ مستخدم مولَّد عشوائياً بمفتاح مشتق من بيانات اعتماد تسجيل الدخول، ويُحفَظ تحت الملفّ.14

سلسلة مفاتيح DPAPIيُحمى المفتاح الرئيسي للمستخدم المولَّد عشوائياً بمفتاح مشتق من بيانات اعتماد تسجيل الدخول، ويشفّر ذلك المفتاح الرئيسي سرّ التطبيق، ولا يمكن فكّ تشفير النصّ المشفَّر نفسه بمفتاح رئيسي لمستخدم آخرحماية بمفتاح مشتقتشفيرلا يمكن فكّ التشفيربيانات اعتماد تسجيل الدخولمفتاحك الرئيسيسرّ التطبيق (كلمات مرور محفوظة وغيرها)مفتاح رئيسي لمستخدم آخروجهة الحفظ تحت الملفّ

الشكل 6: لا تشفّر البيانات مباشرة من بيانات الاعتماد؛ تُحمى المفتاح الرئيسي بمفتاح مشتق من بيانات الاعتماد.

التالي مثال أدنى: بيانات شفّرها المستخدم A وُضعت في مكان مشترك، ثم حُاول فكّ التشفير بمستخدم آخر. حتّى مع مشاركة مكان الحفظ لا يتغيّر فاكّ تشفير CurrentUser.

# في جلسة المستخدم A: شفّر بنطاق CurrentUser واحفظ في مكان مشترك
Add-Type -AssemblyName System.Security
$bytes = [Text.Encoding]::UTF8.GetBytes("secret")
$enc = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, "CurrentUser")
[Convert]::ToBase64String($enc) | Set-Content C:\ProgramData\demo.bin

# حاول فكّ التشفير بمستخدم آخر (مثلاً صر SYSTEM بـ PsExec)
$enc = [Convert]::FromBase64String((Get-Content C:\ProgramData\demo.bin))
[Security.Cryptography.ProtectedData]::Unprotect($enc, $null, "CurrentUser")
# ← CryptographicException: البيانات غير صالحة في الحالة الحالية

5.2 اختر النطاق ممّن ينبغي أن يفكّ التشفير

النطاق وحدة فكّ التشفير انتباه تصميمي
CurrentUser المفتاح الرئيسي للمستخدم الذي شفّر النقل إلى حساب تنفيذ آخر يمنع فكّ التشفير
LocalMachine مفتاح مشترك للجهاز نفسه يمكن فكّ التشفير من أيّ عملية على الجهاز نفسه، لذا ضيّق من يقرأ النصّ المشفَّر بـ ACL الملفّ

سرّ يقرؤه الخدمة والمستخدم التفاعلي كلاهما يُصمَّم من البداية بـ LocalMachine مع ACL ملفّ، أو يُشغَّل بحساب من شفّره. لا تغيّر النطاق لمجرد محو خطأ فكّ التشفير؛ قرّر لمن تسمح بفكّ التشفير. على جهاز مشترك انتبه أيضاً إلى خطر أن تكون الحماية على مستوى الجهاز أوسع ممّا ينبغي.15

اختيار نطاق DPAPIإن كان الفاعل الذي ينبغي أن يفكّ التشفير ذلك المستخدم فقط فاختر نطاق CurrentUser، وإن كان فاعلين عدّة على الجهاز نفسه فاختر نطاق LocalMachine وضيّق القرّاء بـ ACL الملفّذلك المستخدم فقطفاعلون عدّة على الجهاز نفسهمن ينبغي أن يفكّ التشفيرنطاق CurrentUserنطاق LocalMachineفشل فكّ التشفير عند تشغيل مستخدم آخرضيّق القرّاء بـ ACL الملفّ

الشكل 7: النطاق يُختار كتصميم لفاكّ التشفير، لا كـ «ما عمل مصادفة».

5.3 «تغيير» كلمة المرور و«إعادة تعيينها» مختلفان

المفتاح الذي يحمي المفتاح الرئيسي يعتمد على بيانات اعتماد تسجيل الدخول. عندما يغيّر المستخدم كلمة مروره بنفسه يُحمى المفتاح الرئيسي من جديد بمفتاح مشتق من كلمة المرور الجديدة، فيُورَّث قدرة فكّ التشفير.

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

5.4 في ASP.NET Core أيضاً أكّد وجهة حفظ المفتاح

قد تعتمد على هذه الحدود حتّى دون استدعاء DPAPI مباشرة. يحفظ ASP.NET Core Data Protection حلقة المفاتيح المستخدمة لحماية مصادقة ملفات تعريف الارتباط وغيرها في مكان حسب البيئة.16

البيئة مكان المفتاح والأثر
ملفّ التعريف متاح %LOCALAPPDATA%\ASP.NET\DataProtection-Keys. على Windows يُشفَّر بـ DPAPI
الملفّ غير متاح ومُستضاف في IIS سقوط إلى سجلّ HKLM مضبوط ACL لحساب عملية العامل
لا ينطبق أيّ منهما يصير مفتاحاً مؤقّتاً داخل العملية فقط. يُفقَد المفتاح عند إعادة التشغيل وتبطل البيانات المحمية مثل ملفات تعريف ارتباط المصادقة

أكّد loadUserProfile وsetProfileEnvironment وشكل الاستضافة معاً، وافهم في أيّ تكوين تُوضَع المفاتيح. المهم ليس «يمكن البدء» فقط بل إمكان استخدام المفتاح نفسه بعد إعادة التشغيل أيضاً.

اختيار النطاق والتمييز عن Credential Manager مشمولان بتفصيل في «حفظ المعلومات السرّية لتطبيقات Windows - تجنّب الإعدادات بنصّ واضح بـ DPAPI».

6. الحدود 4: ملفّ تعريف المتصفّح ── «مسجَّل الدخول» ملك المستخدم

على المكتب أنت مسجَّل الدخول، لكن تشغيل المتصفّح في CI يعيد شاشة تسجيل الدخول. تُرتَّب هذه المشكلة بفصل مكان حفظ الملفّ ومفتاح التشفير.

6.1 حدودان: مكان الحفظ والمفتاح

ملفّ تعريف متصفّحات قائمة على Chromium مثل Chrome وEdge يكون افتراضياً في مجلّد User Data تحت %LOCALAPPDATA%. التاريخ وملفات تعريف الارتباط والإضافات وكلمات المرور المحفوظة تنتمي إلى بيئة مستخدم Windows ذلك.17

تُشفَّر ملفات تعريف الارتباط وكلمات المرور المحفوظة بمفتاح تشفير داخل الملفّ، والمفتاح نفسه محمي بـ DPAPI. لذا حتّى مع نسخ المجلّد إلى مستخدم آخر أو جهاز آخر لا يطابق المفتاح ويتعذّر فكّ التشفير.

يضيف Chrome الحديث أيضاً App-Bound Encryption (تشفيراً مربوطاً بالتطبيق). يجعل فكّ تشفير المفتاح عبر خدمة بامتياز SYSTEM، ويتحقّق ليس من المستخدم فقط بل من معرّف التطبيق الذي طلب أيضاً.18 هذا حديث سلالة Chromium؛ لمتصفّحات مثل Firefox بحماتها الخاصّة لملفّ التعريف الظروف مختلفة.

الحدود ما يحدث في وجهة الأتمتة
حدود AppData ليس لوكيل CI أو مستخدم الخدمة الملفّ الذي تستخدمه عادة
حدود DPAPI حتّى مع نسخ المجلّد لا يمكن فكّ تشفير المفتاح المحمي
حدودان يسندان حالة تسجيل دخول المتصفّحملفّ تعريف المتصفّح تحت LOCALAPPDATA وينتمي إلى الحدود 1، ومفتاح تشفير ملفات تعريف الارتباط محمي بـ DPAPI وينتمي إلى الحدود 3، لذا لا يُورَّث الملفّ ولا المفتاح إلى مستخدم آخرملفّ تعريف المتصفّحالمكان تحت LOCALAPPDATAمفتاح تشفير ملفات تعريف الارتباط محمي بـ DPAPIملفّ تعريف آخر فارغ لمستخدم تنفيذ CIلا يُحمَل بنسخ المجلّد

الشكل 8: «أخذ حالة تسجيل الدخول معك» يُمنَع بالحدود 1 والحدود 3 كليهما.

6.2 في الأتمتة صرّح بطريقة صنع حالة تسجيل الدخول

ينشئ Selenium وPlaywright افتراضياً ملفّ تعريف مؤقّتاً يُستخدم مرّة ويُشغَّلان به. لذا حتّى مع المستخدم نفسه لا تُستخدم حالة تسجيل دخول المتصفّح المعتاد تلقائياً.

حتّى مع تحديد دليل ملفّ تعريف دائم، عند النقل إلى CI أو خدمة لمستخدم آخر تبقى مشكلة مكان الحفظ والمفتاح في القسم السابق. التدبير ليس نسخ ملفّ تعريف مسجَّل الدخول، بل أحد التالي.

  • كتابة خطوات تسجيل الدخول لحساب اختبار في الشيفرة.
  • التصريح بحفظ ملفات تعريف الارتباط واستعادتها بآلية حالة التخزين لأداة الأتمتة.

أن مستخدماً آخر لا يستطيع استخدام ملفات تعريف الارتباط بالنسخ وحده ليس إزعاجاً فحسب بل حدود أمنية أيضاً. تصميم الأتمتة يفترض وجود تلك الحدود.

7. الحدود 5: بيانات الاعتماد والشهادات ── الخزينة لكلّ مستخدم على حدة

بيانات اعتماد حُفظت بـ cmdkey لا تُستخدم عند تشغيل المهمّة فيصير خطأ مصادقة. هنا أيضاً أكّد لا «حُفظ على الجهاز» بل «بأيّ مستخدم حُفظ».

7.1 Credential Manager خزينة لكلّ مستخدم تنفيذ

Credential Manager الذي يؤكَّد بـ cmdkey /list خزينة لكلّ مستخدم.19 بيانات الاعتماد المحفوظة على القرص، لكنّها محمية بـ DPAPI ويستخدمها برنامج يعمل بذلك المستخدم.20

تدخل الخزينة بيانات اعتماد محفوظة لخادم ملفّات أو محرّك شبكة، ورموز Git التي حفظها git-credential-manager، وكلمات مرور اتصال RDP المحفوظة، وأسرار تطبيقات تستخدم Credential API.

حتّى إن وُجدت في خزينتك بعد تسجيل دخول تفاعلي، فليست في خزينة حساب تنفيذ الخدمة أو المهمّة. جهّز إعداداً يُدخل بيانات الاعتماد اللازمة في سياق حساب التنفيذ نفسه. إن نجح git pull على مكتبك فقط فأكّد أيضاً فرق الخزينة المستخدمة.

لكن مهمّة تكوين S4U لا تُحَلّ بإدخال بيانات الاعتماد وحدها. أكّد نوع تسجيل الدخول أوّلاً، وانظر في تكوين يحفظ كلمة المرور أو التحويل إلى حساب خدمة. ترتيب الإجراءات مرتَّب في الفصل 8.

خزينة بيانات الاعتماد لكلّ مستخدمخزينتك تحتوي بيانات اعتماد git وبيانات اعتماد خادم الملفّات المحفوظة وكلمة مرور RDP، بينما خزينة مستخدم تنفيذ الخدمة فارغة ما لم تُدخَل بيانات اعتماد، وتلك حقيقة خطأ المصادقةخزينتكبيانات اعتماد gitبيانات اعتماد خادم الملفّات المحفوظةكلمة مرور RDP المحفوظةخزينة مستخدم تنفيذ الخدمةفارغة إن لم تُدخَل = حقيقة خطأ المصادقة

الشكل 9: «المصادقة تمرّ على المكتب» اختصار لـ «خزينتك متاحة» فحسب.

7.2 للشهادات افصل المخزن وصلاحيات المفتاح الخاص

المخزن الحدود والاستخدام
Cert:\CurrentUser مخزن لكلّ مستخدم. المفتاح الخاص لشهادة عميل وُضعت هنا يُحمى لكلّ مستخدم
Cert:\LocalMachine مخزن للجهاز كلّه. ضع شهادة الخدمة واسمح لحساب الخدمة بالقراءة بـ ACL المفتاح الخاص

الشهادات المستخدمة في خدمة تُصمَّم أساساً بمخزن LocalMachine وACL المفتاح الخاص معاً.21 كيان مخزن المستخدم تحت HKCU\Software\Microsoft\SystemCertificates، لذا داخل حدود HKCU.22

للتفاصيل انظر «دليل عملي لمخزن شهادات Windows ── المستخدم أم الحاسوب، أين تضع».

7.3 في ترقية UAC افصل «الحساب نفسه» عن «حساب آخر»

عند تسجيل دخول مستخدم مسؤول مع تفعيل UAC يُنشأ رمزان مرتبطان: رمز قياسي مقيَّد الصلاحيات، ورمز مسؤول كامل.8

تعيين محرّك الشبكة لكلّ جلسة تسجيل دخول. قد يظهر Z: في مستكشف الملفّات ولا يظهر من أداة شُغِّلت كمسؤول.9

طريقة التشغيل ما يتغيّر وما لا يتغيّر
ترقية UAC مع بقاء الحساب نفسه SID نفسه، وHKCU وخزينة بيانات الاعتماد كما هما. قد يختفي تعيين محرّك لكلّ جلسة تسجيل دخول
الترقية ببيانات اعتماد حساب مسؤول آخر / RunAs يتغيّر SID أيضاً. HKCU والخزينة لذلك المسؤول. AppData والمفاتيح وحالة المتصفّح تتلقّى حدود مستخدم آخر

لا تحكم على «لا يعمل بعد الترقية» كلّه كتغيير مستخدم؛ أكّد أوّلاً ما إذا كان الحساب نفسه.

انقسام داخل المستخدم نفسه تولّده ترقية UACتسجيل دخول مسؤول مع تفعيل UAC يصنع رمزين، قياسياً ومُرقّى، ومحرّك الشبكة المعيَّن في جهة الرمز القياسي لا يظهر من عملية الرمز المُرقّىجلسة تسجيل دخول أخرىتسجيل دخول مستخدم مسؤولرمز قياسيرمز مُرقّىمحرّك Z: المعيَّن هناZ: لا يظهر من الأداة المُرقّاة

الشكل 10: الترقية تصنع «عالم آخر للمستخدم نفسه». الحدود ليست حديث SID وحده.

8. قائمة تحقّق حسب شكل التشغيل

8.1 في المهمّات انظر إلى نوع تسجيل الدخول بعد حساب التنفيذ

حتّى مع تحديد المستخدم نفسه في Task Scheduler يتغيّر ما يمكن استخدامه بنوع تسجيل الدخول.6

نوع تسجيل الدخول ما تؤكّده
رمز تفاعلي (InteractiveToken) تكوين يعمل في الجلسة أثناء تسجيل الدخول
حفظ كلمة المرور (Password) تكوين يستطيع استخدام بيانات الاعتماد بلا تفاعل
S4U (بلا حفظ كلمة المرور) لا تُحفَظ كلمة المرور، ولا يُوصَل إلى موارد الشبكة والملفّات المشفَّرة (EFS)

لمهمّة لا تُستخدم فيها بيانات الاعتماد المحفوظة أكّد أوّلاً قيد S4U. لا تجعل إدخال بيانات اعتماد في الخزينة مع بقاء S4U تدبيراً. انظر في تكوين يحفظ كلمة المرور أو التحويل إلى حساب خدمة، وعندئذ إن لزم أدخل في خزينة حساب التنفيذ.

تفاصيل الإعداد مشمولة في «تشغيل دفعات أعمال بثبات بـ Task Scheduler».

المحور الثاني: نوع تسجيل دخول المهمّةتكوين تشغيل Task Scheduler يملك أنواع تسجيل دخول رمز تفاعلي وحفظ كلمة المرور وS4U، وفي S4U لا تُحفَظ كلمة المرور ولا يُوصَل إلى الشبكة وEFSرمز تفاعليحفظ كلمة المرورS4U (بلا حفظ كلمة المرور)تكوين تشغيل المهمّةنوع تسجيل الدخوليعمل في الجلسة أثناء تسجيل الدخوليمكن استخدام بيانات الاعتماد بلا تفاعللا يصل إلى الشبكة وEFS

الشكل 11: حتّى مع مستخدم التنفيذ نفسه يتغيّر ما يمكن استخدامه بطريقة تسجيل الدخول.

8.2 جدول فحص قبل تغيير وجهة التشغيل

شكل التشغيل فاعل التنفيذ الحدود والأعراض التي تُفحَص خصوصاً
Task Scheduler الحساب المحدَّد عند التسجيل الحدود 1 و2 و3 و5. أكّد مرجع AppData وHKCU وفكّ تشفير DPAPI والخزينة. في S4U لا تُستخدم الشبكة وEFS
خدمة Windows SYSTEM، LocalService، NetworkService، حساب خدمة الحدود 1–5. يستخدم SYSTEM systemprofile وHKCU للمستخدم الافتراضي، وLocalService/NetworkService كلّ بيئة تحت ServiceProfiles. لا تُورَّث مفاتيح المطوّر والخزينة وحالة المتصفّح
مجمّع تطبيقات IIS معرّف خاص بالمجمّع مثل IIS AppPool\<الاسم> الحدود 1 و2 و3 و5. أكّد عدم تحميل الملفّ افتراضياً، ومكان مفتاح Data Protection، والوصول إلى المفتاح الخاص لشهادة CurrentUser
RunAs / ترقية UAC المستخدم المحدَّد، أو رمز آخر للمستخدم نفسه إن كان الحساب نفسه فـ SID وHKCU والخزينة نفسها، وتعيين المحرّك يتلقّى فرق الجلسة. إن كان حساباً آخر فافحص الحدود 1–5 كلّها
وكيل CI/CD مستخدم خدمة الوكيل. كثيراً بلا تاريخ تسجيل دخول تفاعلي الحدود 1–5. أكّد أنّه لا يعتمد على ملفّ تعريف المتصفّح وحالة تسجيل الدخول، وبيانات اعتماد Git، وإعدادات HKCU للمطوّر وبيانات محمية بـ DPAPI
RDP / خادم مشترك جلسات متعدّدة للمستخدم نفسه، أو مستخدمون عدّة الجلسات المتعدّدة للمستخدم نفسه تشارك AppData وHKCU لذا انتبه لتعارض الكتابة. مستخدم آخر ينفصل بالحدود 1–5

الصفّ الأخير انتباه بالاتجاه المعاكس. حتّى مع جلسات RDP عدّة للمستخدم نفسه لا يستقلّ AppData وHKCU لكلّ جلسة. هنا ليست مشكلة «لا يُرى» بل «مشاركة الشيء نفسه والكتابة فيه».

9. إرشاد التصميم وتحقيق الأعطال

9.1 قرّر وجهة الحفظ والإعداد من الفاعل الذي يستخدم

الهدف أساس التصميم
إعداد خاص بالمستخدم ضعه في AppData وHKCU
بيانات وإعدادات يشترك فيها كلّ المستخدمين أو الخدمات ضعها في ProgramData وHKLM، وصمّم صلاحية الكتابة وACL
معلومات سرّية اختر نطاق DPAPI ممّن ينبغي أن يفكّ التشفير. مع LocalMachine صمّم أيضاً ACL الملفّ
بيانات اعتماد وشهادات للخدمة أدرج إدخال خزينة حساب التنفيذ، ووضع مخزن شهادات LocalMachine وضبط ACL المفتاح الخاص، في إجراءات الإعداد

إن وُجدت نيّة التحويل إلى خدمة لاحقاً فأدرج فاعل التنفيذ ذلك أيضاً بين القرّاء عند تقرير وجهة الحفظ. المبدأ ألّا تُدخل إلى التشغيل اعتماداً على «ما وُجد مصادفة في بيئة المطوّر».

9.2 التحقيق يتقدّم من فاعل التنفيذ إلى المرجع الفعلي

إجراء تحقيق أعطال حدود المستخدمأكّد مستخدم التنفيذ بـ whoami، وانظر إلى الرمز في Process Explorer، وحدّد المسار ومفتاح السجلّ اللذين قُرئا فعلاً بـ Process Monitor، وإن لزم فأعد الإنتاج من عالم الطرف الآخر بـ psexecأكّد مستخدم التنفيذ بـ whoami /allأكّد الرمز في Process Explorerحدّد المسار والمفتاح الفعليين بـ ProcMonأعد الإنتاج من عالم الطرف الآخر بـ psexecمسار ملفّ تعريف يختلف عن المتوقّع دليل

الشكل 12: أكّد مستخدم التنفيذ، وانظر إلى المسار ومفتاح السجلّ الفعليين، ثم أعد الإنتاج بفاعل التنفيذ المستهدف.

الخطوة طريقة التأكيد نقاط النظر
1. أكّد مستخدم التنفيذ أخرج whoami /all إلى السجلّ فور البدء هل فاعل تنفيذ المهمّة أو الخدمة التي تحدث فيها المشكلة هو نفسه على المكتب
2. أكّد الرمز Process Explorer مستخدم العملية والجلسة. هل مستخدم آخر، أم سياق تنفيذ آخر للمستخدم نفسه
3. انظر إلى المرجع الفعلي Process Monitor مسار الملفّ ومفتاح السجلّ اللذان فُتحا. هل يظهر ملفّ تعريف يختلف عن المتوقّع في PATH NOT FOUND
4. أعد الإنتاج بفاعل التنفيذ المستهدف لـ SYSTEM: psexec -s -i cmd جرّب العملية نفسها من صدفة SYSTEM، وأكّد الفرق عن بيئتك التفاعلية

عند غياب الإعداد عُد إلى AppData وHKCU، وعندما يُقرأ الملفّ ويتعذّر فكّ التشفير إلى DPAPI، وعندما تفشل المصادقة وحدها إلى الخزينة والشهادات ونوع تسجيل الدخول. لا تحكم برسالة الخطأ وحدها؛ أقصر طريق مواءمة «من استخدم أين، بأيّ مفتاح أو بيانات اعتماد».

10. خلاصة

«يعمل على المكتب» يعني «يعمل بذلك المستخدم، وذلك الملفّ، وذلك المفتاح وتلك الخزينة». حتّى مع تشغيل الـ .exe نفسه على الجهاز نفسه يلزم معاملة التحويل إلى مهمّة أو خدمة أو CI كترحيل لبيئة التنفيذ.

يشير AppData ومتغيّرات بيئة المستخدم إلى ملفّ تعريف مستخدم التنفيذ، ويتّجه HKCU أيضاً إلى خلية ذلك المستخدم. يعتمد نطاق CurrentUser في DPAPI على المفتاح الرئيسي للمستخدم، وتتلقّى حالة تسجيل دخول المتصفّح وCredential Manager أيضاً أثر تلك الحدود.

علاوة على ذلك، حتّى مع SID نفسه تبقى فروق نوع تسجيل الدخول وتحميل الملفّ والجلسة بترقية UAC. وبالعكس، عندما تشارك جلسات عدّة للمستخدم نفسه AppData وHKCU فكّر في تعارض الكتابة.

في مراجعة التصميم أكّد السؤال التالي.

هل هذه شيفرة صحيحة أيّاً كان المستخدم الذي تعمل باسمه؟

جهّز وجهات الحفظ والمفاتيح وبيانات الاعتماد اللازمة صراحة لفاعل التنفيذ الفعلي. إن أكّدت هذا المبدأ قبل الترحيل قلّلت في مرحلة التصميم حوادث «لم أغيّر الشيفرة ومع ذلك انكسر».

مقالات ذات صلة

مجالات الاستشارة ذات الصلة

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

روابط مرجعيّة

  1. Microsoft Learn, About User Profiles. حول إنشاء ملفّ تعريف المستخدم عند أوّل تسجيل دخول، وتكوّنه من خلية السجلّ NTUSER.DAT (تُحمَّل عند تسجيل الدخول وتُربَط بـ HKEY_CURRENT_USER) ومجموعات مجلّدات الملفّ على نظام الملفّات.  2

  2. Microsoft Learn, Local accounts. حول كون SYSTEM (S-1-5-18) وNETWORK SERVICE (S-1-5-20) وLOCAL SERVICE (S-1-5-19) حسابات نظام محلّية افتراضية تُستخدم لتشغيل نظام التشغيل والخدمات. 

  3. Microsoft Learn, LocalSystem Account. حول تضمّن رمز LocalSystem NT AUTHORITY\SYSTEM، وعدم ارتباطه بأيّ حساب مستخدم تسجيل دخول، ولذا ارتباط HKEY_CURRENT_USER بالمستخدم الافتراضي، وضرورة تمثيل ذلك المستخدم للوصول إلى ملفّ تعريف مستخدم آخر.  2

  4. Microsoft Learn, LocalService Account. حول امتلاك حساب LocalService مفتاحاً فرعياً تحت HKEY_USERS وارتباط HKEY_CURRENT_USER بحساب LocalService. وNetworkService بالمثل (NetworkService Account).  2

  5. Microsoft Learn, Application Pool Identities. حول عمل مجمّع التطبيقات بمعرّف خاص بالمجمّع، وعدم تحميل IIS ملفّ تعريف مستخدم Windows افتراضياً، وإمكان تحميل الملفّ بضبط السمة LoadUserProfile على true. 

  6. Microsoft Learn, logonType Simple Type. حول وجود أنواع تسجيل دخول المهمّة S4U وPassword وInteractiveToken، وعدم حفظ كلمة المرور في تسجيل دخول S4U وعدم الوصول إلى الشبكة ولا إلى الملفّات المشفَّرة.  2 3

  7. Microsoft Learn, Process Model Settings for an Application Pool. حول وجود السمتين loadUserProfile وsetProfileEnvironment في processModel لمجمّع التطبيقات، وتحكّمهما فيما إذا حمّلت عملية العامل ملفّ تعريف المستخدم.  2

  8. Microsoft Learn, How User Account Control works. حول إنشاء رمزين مرتبطين عند تسجيل دخول مستخدم مسؤول مع تفعيل UAC، رمز مستخدم قياسي ورمز وصول مسؤول كامل.  2

  9. Microsoft Learn, Mapped drives are not available from an elevated prompt. حول تعذّر استخدام محرّك شبكة عُيِّن في جلسة سُجِّل الدخول إليها برمز قياسي من عملية مُرقّاة، والخلفية أن لجلستَي تسجيل الدخول المرتبطتين تعيين محرّك كلّ على حدة.  2

  10. Microsoft Learn, KNOWNFOLDERID. حول تعريف FOLDERID_RoamingAppData (%APPDATA%) وFOLDERID_LocalAppData (%LOCALAPPDATA%) وFOLDERID_LocalAppDataLow كمجلّدات معروفة لكلّ مستخدم. 

  11. Microsoft Learn, Error occurs during desktop setup and desktop location is unavailable. حول امتلاك ملفّ تعريف المستخدم ملفّي خلية NTUSER.DAT وUsrClass.dat، ووضع UsrClass.dat تحت AppData\Local\Microsoft\Windows. 

  12. Microsoft Learn, Services and the Registry. حول وجوب ألّا تصل الخدمة إلى HKEY_CURRENT_USER أو HKEY_CLASSES_ROOT، ووجوب استخدام الدالّة RegOpenCurrentUser عند تمثيل مستخدم. 

  13. Microsoft Learn, CryptProtectData function. حول حماية CryptProtectData البيانات عادة بمفتاح جلسة مرتبط بالمستخدم المسجَّل الدخول وافتراض فكّ التشفير بالمستخدم نفسه، وإمكان التحويل إلى حماية على مستوى الجهاز بعلم CRYPTPROTECT_LOCAL_MACHINE. 

  14. Microsoft Learn, Windows Data Protection. حول حماية DPAPI مفتاحاً رئيسياً مولَّداً عشوائياً بتشفيره بمفتاح مشتق من كلمة مرور المستخدم، وحفظ المفتاح الرئيسي تحت ملفّ تعريف المستخدم، وإعادة حماية المفتاح الرئيسي عند تغيير كلمة المرور.  2

  15. Microsoft Learn, ProtectedData Class. حول سماح DataProtectionScope.CurrentUser بفكّ التشفير للمستخدم الذي حمى فقط، وسماح LocalMachine بفكّ التشفير من أيّ عملية على الجهاز نفسه. 

  16. Microsoft Learn, Data Protection key management and lifetime in ASP.NET Core. حول حفظ المفتاح في %LOCALAPPDATA%\ASP.NET\DataProtection-Keys وتشفيره بـ DPAPI على Windows عندما يكون ملفّ التعريف متاحاً، والسقوط إلى سجلّ HKLM مضبوط ACL لحساب عملية العامل عندما لا يُستخدم الملفّ في استضافة IIS، وفقدان المفتاح مع انتهاء العملية وتعذّر فكّ تشفير الحمولة المحمية عندما لا ينطبق أيّ شرط، وتعلّق سمة setProfileEnvironment. 

  17. مشروع Chromium, User Data Directory. حول كون الافتراضي لدليل User Data لـ Chrome على Windows هو %LOCALAPPDATA%\Google\Chrome\User Data، ووضع الملفّ (التاريخ والإشارات المرجعية وملفات تعريف الارتباط وغيرها) تحته. 

  18. Google Security Blog, Improving the security of Chrome cookies on Windows. حول استخدام Chrome DPAPI لتشفير ملفات تعريف الارتباط وغيرها على Windows، وحماية المفتاح عبر خدمة بامتياز SYSTEM بـ App-Bound Encryption والتحقّق حتّى من معرّف التطبيق الذي طلب فكّ التشفير. 

  19. Microsoft Learn, cmdkey. حول إمكان عرض قائمة أسماء المستخدمين وكلمات المرور المحفوظة (بيانات الاعتماد) وإنشائها وحذفها بأمر cmdkey. 

  20. Microsoft Learn, Cached and Stored Credentials Technical Overview. حول وضع بيانات الاعتماد المحفوظة في Credential Manager على القرص وحمايتها بـ DPAPI، وإمكان وصول برنامج يعمل بذلك المستخدم إلى بيانات اعتماد هذا المخزن. 

  21. Microsoft Learn, Local Machine and Current User Certificate Stores. حول وجود نوعين لمخزن الشهادات، مخزن الجهاز المحلّي (الجهاز كلّه) ومخزن المستخدم الحالي (لكلّ مستخدم). 

  22. Microsoft Learn, System Store Locations. حول وضع مخزن نظام CERT_SYSTEM_STORE_CURRENT_USER تحت HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates في السجلّ. 

أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.

ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.

الأسئلة الشائعة

أسئلة شائعة حول موضوع هذه المقالة.

تطبيق يعمل عند التشغيل من مستكشف الملفّات لا يجد ملفّ إعداده عند التشغيل من Task Scheduler. لماذا؟
لأن متغيّرات بيئة مثل %APPDATA% تُحَلّ إلى ملفّ تعريف المستخدم الذي يشغّل البرنامج. عندما تعمل المهمّة كـ SYSTEM أو كحساب آخر، تشير متغيّرات البيئة إلى ملفّ تعريف مختلف (تحت systemprofile في حالة SYSTEM)، وملفّ الإعداد الذي حفظته غير موجود هناك. أكّد الحساب الذي تعمل به المهمّة، وضع البيانات التي ينبغي مشاركتها تحت ProgramData كإصلاح دائم.
كلمة مرور حُفظت بـ ProtectedData.Protect لم يعد ممكناً فكّ تشفيرها ما إن صار التطبيق خدمة.
يعتمد DPAPI في نطاق CurrentUser على المفتاح الرئيسي للمستخدم الذي شفّر البيانات. إن عملت الخدمة بحساب مختلف فالمفتاح الرئيسي مختلف، فيفشل فكّ التشفير بـ CryptographicException. أعد تصميم سرّ يقرؤه الخدمة والمستخدم التفاعلي كلاهما ليستخدم نطاق LocalMachine مع ACL ملفّ، أو شغّل الخدمة بحساب من شفّره.
ماذا يحدث عندما تقرأ عملية تعمل كـ SYSTEM مفتاح HKCU؟
في عملية LocalSystem يرتبط HKEY_CURRENT_USER بالمستخدم الافتراضي (HKEY_USERS\.DEFAULT)، لذا لا تظهر القيم التي كتبها المستخدم التفاعلي في HKCU. ضع إعدادات الجهاز كلّه في HKLM، وإن وجب حتماً قراءة إعدادات مستخدم فتمثّل ذلك المستخدم ثم استخدم RegOpenCurrentUser.
هل يمكنني نسخ ملفّ تعريف Chrome/Edge مسجَّل الدخول إلى جهاز CI واستخدامه؟
عموماً لا. يعيش ملفّ تعريف متصفّح قائم على Chromium مثل Chrome أو Edge تحت %LOCALAPPDATA% للمستخدم، ومفتاح تشفير ملفات تعريف الارتباط وكلمات المرور المحفوظة محمي بـ DPAPI لذلك المستخدم. نسخ المجلّد إلى مستخدم آخر أو جهاز آخر يفشل في فكّ التشفير لأن المفتاح لا يطابق (المتصفّحات مثل Firefox التي تملك حماية ملفّ تعريف خاصّة قصّة مختلفة). للأتمتة، اكتب خطوات تسجيل الدخول لحساب اختبار، أو استخدم آلية حالة التخزين لأداة الأتمتة.
بيانات اعتماد حُفظت بـ cmdkey لا تُستخدم عندما تعمل المهمّة من Task Scheduler.
لأن خزينة Credential Manager منفصلة لكلّ مستخدم، وما حفظته ذهب إلى خزينة تسجيل دخولك التفاعلي. إضافة إلى ذلك تعمل مهمّة مضبوطة على «عدم حفظ كلمة المرور» (S4U) بلا بيانات اعتماد شبكة، لذا إدخال بيانات اعتماد في الخزينة لا يفيد ما دامت على S4U. انظر أوّلاً في تكوين يحفظ كلمة المرور أو التحويل إلى حساب خدمة، وعندئذ فقط إن لزم أدخل بيانات الاعتماد في خزينة حساب التنفيذ نفسه.

الملف الشخصي للمؤلف

صفحة الملف الشخصي لمؤلف المقالة.

غو كومورا

مؤسّس شركة كومورا سوفت ذ.م.م.

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

العودة إلى المدونة