ملفات OneDrive عند الطلب وتطبيقات الأعمال — الافتراضات التي يكسرها العنصر النائب وكيف تتعامل معها
· غو كومورا · OneDrive, الملفات عند الطلب, KFM, Windows, تطبيقات الأعمال, تخزين سحابي, نظام الملفات, استكشاف الأخطاء, أنظمة المعلومات
«تطبيق أعمال لا يستطيع قراءة CSV حفظته على سطح المكتب.» «استيراد كان يعمل يفشل بـ «الملف غير موجود» بعد استبدال الحاسوب.» «المستكشف يعرض الملف، لكن فتحه من التطبيق يُخطئ.» — خلال السنوات الأخيرة أصبح هذا النوع من استشارات العملاء أمراً معتاداً.
عند التحقيق، السبب غالباً ليس خطأ في التطبيق بل «النسخ الاحتياطي التلقائي لسطح المكتب والمستندات» في OneDrive (Known Folder Move، KFM) و«الملفات عند الطلب». سطح المكتب الحقيقي انتقل إلى C:\Users\<الاسم>\OneDrive\Desktop، وبعض الملفات التي تراها هناك «عناصر نائبة» بلا محتوى محلي. المستخدمون وتقنية المعلومات يواصلون استخدام الحاسوب دون ملاحظة هذا التغيير.
بعبارة أخرى، الافتراض الضمني لتطبيق الأعمال بأن «الملف على القرص المحلي» استُبدل، دون أن يقرر أحد ذلك، بافتراض أن «الملف في السحابة، ومحلياً لا يوجد سوى المظهر». موجّهة إلى موظفي تقنية المعلومات في المنشآت الصغيرة والمتوسطة ومطوّري تطبيقات Windows، تنظّم هذه المقالة من مصادر Microsoft Learn الأولية كيف تعمل العناصر النائبة، وكيف تُحكم الحالة من سمات الملف، والمطبات النموذجية التي يقع فيها تطبيق الأعمال، وما يمكن أن يفعله جانب التطوير وجانب تقنية المعلومات، وإجراء فرز عندما يُقال لك «الملف لا يُفتح».
flowchart TB
accTitle: استبدال الافتراض الضمني لتطبيق الأعمال
accDescr: الافتراض الضمني لتطبيق الأعمال بأن الملف على القرص المحلي استُبدل دون أن يقرر أحد ذلك بافتراض أن المحتوى الحقيقي في السحابة ومحلياً لا يوجد سوى المظهر
before["الافتراض الضمني التقليدي"] --> b1["محتوى حقيقي على القرص المحلي"]
after["الافتراض المستبدل"] --> a1["المحتوى الحقيقي في السحابة"]
a1 --> a2["محلياً لا يوجد سوى المظهر"]
a2 -.-> note["عنصر نائب"]
الشكل 1: الافتراض بأن «المحتوى الحقيقي محلي» استُبدل، دون أن يقرر أحد ذلك، بـ «المحتوى الحقيقي في السحابة؛ محلياً لا يوجد سوى المظهر».
1. الخلاصة أولاً
- قد يكون سطح المكتب والمستندات والصور قد نُقلت تحت
C:\Users\<الاسم>\OneDrive\بواسطة KFM. يميل إلى التفعيل أثناء الإعداد الأولي لحاسوب جديد، ويمكن للمنظمة تطبيقه بالجملة عبر سياسة. تطبيق يفترض مساراً ثابتاً ينكسر هنا.1 - الملفات عند الطلب مفعّلة افتراضياً في تطبيق المزامنة الحالي. الملفات المنشأة على جهاز آخر أو على الويب تظهر كعناصر نائبة «متصل فقط» بلا محتوى محلي.23
- الهوية الحقيقية للعنصر النائب هي نقطة إعادة تحليل يديرها Cloud Files API (المرشح الصغير cldflt.sys). يبدو ملفاً عادياً للمستكشف ولواجهات الملفات، وفتحه ينزّل (يُماهي) تلقائياً.4
- يمكن الحكم على الحالة من سمات الملف. FILE_ATTRIBUTE_OFFLINE و RECALL_ON_DATA_ACCESS و PINNED و UNPINNED وما شابهها علامات، وأمر attrib يعرضها بالحروف O و P و U. فحص السمات وحدها لا يسبب تنزيلاً.567
- الحوادث النموذجية في تطبيق الأعمال مزيج من «لا يُفتح» و«بطيء» و«سمات أُسيء حكمها» و«عاصفة أحداث مراقبة» و«تعارض مع المزامنة». دون اتصال أو مع توقف OneDrive تفشل الإماهة، وعملية دفعية تستحث تنزيل كل ملف.48
- استجابة جانب التطبيق هي «احترام العناصر النائبة». الأساس الحكم من السمات عند التعداد وعدم الفتح بلا تروٍّ، واستخدام FILE_FLAG_OPEN_NO_RECALL عند الحاجة، وعدم وضع مجلد البيانات تحت OneDrive.910
- استجابة جانب تقنية المعلومات هي «التشغيل بالتثبيت» و«التحكم بالسياسة». اضمن المحتوى الحقيقي لمجلدات العمل بـ «الاحتفاظ دائماً على هذا الجهاز»، واضبط KFM والملفات عند الطلب قصداً عبر Group Policy / Intune. لا تنسَ أن Storage Sense يمكنه أيضاً «إرجاع الملفات غير المستخدمة إلى متصل فقط».1112
في جملة واحدة: «ملف ظاهر في المستكشف» و«ملف له محتوى حقيقي على القرص المحلي» لم يعودا الشيء نفسه.
2. ما الذي يحدث — KFM والملفات عند الطلب
2.1. قد لا يعود سطح المكتب C:\Users\<الاسم>\Desktop
لتطبيق مزامنة OneDrive ميزة اسمها Known Folder Move (KFM). على شاشة الإعدادات تظهر كـ «نسخ احتياطي» أو «نسخ المجلدات المهمة احتياطياً» وما شابه؛ عندما تكون مفعّلة، يُنقل (يُعاد توجيه) سطح المكتب والمستندات والصور الحقيقية تحت مجلد OneDrive.1
| المكان الذي يراه المستخدم | المسار الحقيقي قبل KFM | المسار الحقيقي بعد KFM |
|---|---|---|
| سطح المكتب | C:\Users\taro\Desktop |
C:\Users\taro\OneDrive\Desktop |
| المستندات | C:\Users\taro\Documents |
C:\Users\taro\OneDrive\Documents |
| الصور | C:\Users\taro\Pictures |
C:\Users\taro\OneDrive\Pictures |
في الإعداد الأولي (OOBE) لحاسوب جديد، تسجيل الدخول بحساب مايكروسوفت أو حساب عمل يعرض على نطاق واسع نسخ المجلدات احتياطياً كاقتراح افتراضي، والمتابعة كما هي تفعّله. يمكن للمنظمة أيضاً تطبيقه بالجملة دون سؤال المستخدم شيئاً، بسياسة «نقل مجلدات Windows المعروفة إلى OneDrive بصمت» (KFMSilentOptIn).111
flowchart TB
accTitle: مساران لتفعيل KFM
accDescr: تسجيل الدخول بحساب أثناء الإعداد الأولي لحاسوب جديد يعرض نسخ المجلدات احتياطياً كاقتراح افتراضي والمتابعة كما هي تفعّله؛ في المنظمة سياسة KFMSilentOptIn تطبقه بالجملة دون سؤال المستخدم
oobe["الإعداد الأولي لحاسوب جديد"] --> signin["تسجيل الدخول بحساب"]
signin --> prompt["يُقترح النسخ الاحتياطي افتراضياً"]
prompt --> on1["المتابعة كما هي تفعّله"]
org["سياسة المنظمة"] --> silent["KFMSilentOptIn"]
silent --> on2["يُطبق بالجملة دون سؤال"]
on1 --> kfm["KFM مفعّل"]
on2 --> kfm
الشكل 2: يُفعَّل KFM دون أن يلاحظ أحد، إما بالاقتراح الافتراضي عند الإعداد الأولي أو بسياسة التطبيق الصامت للمنظمة.
الجانب المحرج أن المظهر في المستكشف بالكاد يتغير. واجهات المجلدات المعروفة للقشرة (SHGetKnownFolderPath و Environment.GetFolderPath في .NET) تعيد المسار الصحيح بعد النقل، فتطبيق حسن السلوك يواصل العمل. ما ينكسر هو تطبيق يدمج مساراً ثابتاً مثل C:\Users\%USERNAME%\Desktop في ملف إعدادات أو في الكود. النمط النموذجي لفشل الاستيراد بـ «الملف غير موجود» بعد استبدال الحاسوب هو هذا.
flowchart TB
accTitle: سلوك حل مسار التطبيق بعد KFM
accDescr: بعد أن ينقل KFM سطح المكتب الحقيقي والمجلدات المشابهة تحت OneDrive، تطبيق يستخدم واجهات المجلدات المعروفة يواصل العمل بالمسار الصحيح بعد النقل، أما تطبيق يدمج مساراً ثابتاً فيفشل بملف غير موجود
kfm["تفعيل KFM"] --> move["سطح المكتب الحقيقي والمشابه ينتقل تحت OneDrive"]
move --> how{"كيف يحل التطبيق المسار؟"}
how -->|واجهات المجلدات المعروفة| ok["يحصل على المسار الصحيح بعد النقل ويواصل العمل"]
how -->|مسار ثابت مضمّن| ng["الملف غير موجود"]
الشكل 3: بعد KFM، تطبيق يستخدم واجهات المجلدات المعروفة يواصل العمل، أما تطبيق يضمّن مساراً ثابتاً فينكسر هنا.
2.2. الملفات عند الطلب — ظاهرة، لكن بلا محتوى حقيقي
الخيط الآخر هو الملفات عند الطلب. في بيئة تكون فيها مفعّلة، كل ملف على OneDrive ظاهر في المستكشف، لكن المحتوى لا يُنزَّل حتى يُفتح الملف. هذه الميزة مفعّلة افتراضياً في تطبيق المزامنة الحالي، ومايكروسوفت توصي أيضاً بتركها مفعّلة.23
يمكن قراءة الحالة من أيقونات الحالة في المستكشف.13
| الأيقونة | الحالة | المحتوى المحلي |
|---|---|---|
| علامة سحابة | متصل فقط | لا يوجد (عنصر نائب فقط) |
| علامة على خلفية بيضاء | متاح محلياً | موجود (لكن يمكن تحريره لاحقاً تلقائياً) |
| علامة بيضاء على خلفية خضراء | الاحتفاظ دائماً على هذا الجهاز (مثبت) | موجود (خارج التحرير التلقائي) |
المهم هنا هو الحالة الوسطى. ملف فُتح مرة وصار له محتوى محلي يمكن أن يعود إلى متصل فقط عبر إجراء المستخدم «تحرير مساحة» أو عبر Storage Sense المذكور لاحقاً. هذا أحد أسباب فشل صعب التكرار من نوع «كان يعمل الشهر الماضي».312
stateDiagram-v2
accTitle: حالات الملفات عند الطلب الثلاث والانتقالات
accDescr: ملف متصل فقط يصبح متاحاً محلياً عند الفتح، لكن تحرير مساحة أو Storage Sense يمكن أن يعيده إلى متصل فقط، والمثبت وحده خارج التحرير التلقائي
s1: متصل فقط (علامة سحابة)
s2: متاح محلياً
s3: مثبت (الاحتفاظ دائماً على هذا الجهاز)
s1 --> s2: فتح (إماهة)
s2 --> s1: تحرير مساحة
s2 --> s1: Storage Sense
s1 --> s3: الاحتفاظ دائماً على هذا الجهاز
s2 --> s3: الاحتفاظ دائماً على هذا الجهاز
s3 --> s2: إلغاء التثبيت
الشكل 4: حالات الملفات عند الطلب الثلاث. «متاح محلياً» يمكن أن يعود تلقائياً إلى متصل فقط؛ التثبيت خارج ذلك.
3. الهوية الحقيقية للعنصر النائب — Cloud Files API ونقاط إعادة التحليل
الملفات عند الطلب مُنفَّذة فوق آلية نظام قُدّمت في Windows 10 الإصدار 1709، Cloud Files API. وحدة العمل في جانب نظام الملفات مرشح صغير اسمه cldflt.sys (اسم الخدمة CldFlt، «Windows Cloud Files Filter Driver»)، وOneDrive أحد «مزوّدي المزامنة» الذين يستخدمون هذه الواجهة.47
العنصر النائب تقنياً نقطة إعادة تحليل. على نظام الملفات لا توجد سوى بيانات وصفية مثل الاسم والحجم والطوابع الزمنية (نحو 1KB)؛ لا توجد بيانات محتوى. عندما يفتح التطبيق الملف ويقرأ، يرصد المرشح الصغير الطلب، ويأمر مزوّد المزامنة بنقل البيانات، وينتظر انتهاء التنزيل، ثم تتقدم القراءة. هذا الجلب يُسمى إماهة؛ التخلص من المحتوى المحلي والعودة إلى عنصر نائب يُسمى نزع الإماهة.4
sequenceDiagram
accTitle: الإماهة عند فتح عنصر نائب
accDescr: عندما يفتح تطبيق عنصراً نائباً ويقرأ، يرصد المرشح الصغير cldflt.sys الطلب ويأمر مزوّد المزامنة بنقل البيانات وينتظر انتهاء التنزيل ثم تتقدم القراءة
participant app as تطبيق أعمال
participant flt as المرشح الصغير cldflt.sys
participant sync as مزوّد المزامنة
app->>flt: طلب فتح وقراءة
flt->>sync: أمر بنقل البيانات
sync-->>flt: اكتمل التنزيل
flt-->>app: تتقدم القراءة
الشكل 5: قراءة العنصر النائب تتقدم بعد أن يجعل المرشح الصغير مزوّد المزامنة يجلب البيانات.
سماع «نقطة إعادة تحليل» يجعلك تقلق بشأن التوافق مع كود قائم «يعامل نقطة إعادة التحليل معاملة خاصة إن رصدها»، لكن لأجل التوافق فإن Cloud Files API تخفي أنها نقطة إعادة تحليل عن الجميع عدا محرك المزامنة والعمليات تحت %systemroot%. من تطبيق عادي تبدو «ملفاً عادياً بطيئاً قليلاً في الفتح». تلك الشفافية الدقيقة، إلى جانب كونها مريحة، هي أيضاً سبب «انكسر افتراض التطبيق دون أن يلاحظ».4 آلية نقاط إعادة التحليل نفسها مشروحة في «NTFS Internals».
flowchart TB
accTitle: إخفاء نقطة إعادة التحليل واختلاف المظهر
accDescr: الهوية الحقيقية للعنصر النائب نقطة إعادة تحليل، لكن Cloud Files API تخفيها عن العمليات غير محرك المزامنة، فمن تطبيق عادي تبدو ملفاً عادياً بطيئاً قليلاً في الفتح
ph["عنصر نائب (نقطة إعادة تحليل)"] --> who{"أي عملية فتحته؟"}
who -->|محرك المزامنة وما شابه| raw["ظاهر كنقطة إعادة تحليل"]
who -->|أي تطبيق آخر| plain["يبدو ملفاً عادياً"]
plain -.-> note["يبدو بطيئاً قليلاً في الفتح فقط"]
الشكل 6: حقيقة أنها نقطة إعادة تحليل مخفية عن الجميع عدا محرك المزامنة، ولتطبيق عادي تبدو ملفاً عادياً.
في خصائص المستكشف، للعنصر النائب مظهر مميز: «الحجم» يعرض الحجم الأصلي، بينما «الحجم على القرص» تقريباً 0. افتراض «له حجم، إذن لا بد أن له محتوى حقيقياً» لا يصمد هنا.
flowchart TB
accTitle: مظهر العنصر النائب في الخصائص
accDescr: في خصائص المستكشف يعرض العنصر النائب الحجم الأصلي كحجم بينما الحجم على القرص تقريباً 0، فافتراض أن له حجماً وبالتالي لا بد من محتوى حقيقي لا يصمد
prop["خصائص العنصر النائب"] --> size["الحجم هو الحجم الأصلي"]
prop --> disk["الحجم على القرص تقريباً 0"]
size -.-> trap["افتراض وجود محتوى حقيقي"]
disk -.-> truth["لا يوجد محتوى محلي"]
الشكل 7: يعرض العنصر النائب الحجم الأصلي كـ «الحجم» بينما «الحجم على القرص» تقريباً 0.
4. سمات الملف تخبرك بالحالة
حالة العنصر النائب منشورة كسمات ملف عادية. الرئيسية كما يلي.5
| السمة | القيمة | المعنى |
|---|---|---|
| FILE_ATTRIBUTE_OFFLINE | 0x00001000 | البيانات غير متاحة فوراً (السمة التقليدية لإدارة التخزين الهرمي) |
| FILE_ATTRIBUTE_RECALL_ON_OPEN | 0x00040000 | لا يوجد محتوى محلي فعلي. تظهر فقط في نتائج تعداد الدليل |
| FILE_ATTRIBUTE_PINNED | 0x00080000 | المستخدم ينوي «الاحتفاظ به محلياً دائماً» (مثبت) |
| FILE_ATTRIBUTE_UNPINNED | 0x00100000 | لا حاجة للاحتفاظ بالمحتوى المحلي (نية جعله متصل فقط) |
| FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS | 0x00400000 | بعض المحتوى أو كله غير محلي. القراءة تسبب جلباً من البُعد |
أمر attrib في موجه الأوامر يمكنه عرض هذه وضبطها بحرف واحد. O سمة دون اتصال، P مثبت، U غير مثبت.6 التوافق مع حالة ملفات OneDrive عند الطلب منظّم في وثائق مايكروسوفت كما يلي.7
| حالة الملفات عند الطلب | السمات | أمر الضبط |
|---|---|---|
| متاح دائماً (مثبت) | Pinned (تُعرض P) | attrib +p <path> |
| متاح محلياً | لا P ولا U | attrib -p <path> |
| متصل فقط | Unpinned (تُعرض U) | attrib +u <path> |
تحذير واحد. تبديل الحالة له ترتيب. عندما تريد لملف متصل فقط (U) أن يصبح «متاحاً محلياً»، تشغيل -p وحده يترك U مضبوطة ولا يُجلب المحتوى الحقيقي. وثائق مايكروسوفت تعرض أيضاً إجراء عمل +p أولاً (متاح دائماً) لتنزيل المحتوى الحقيقي ثم -p.7 في سكربت يجب أن يبدّل حالة قائمة بموثوقية، أأمن أن تمسح السمة المقابلة في الوقت نفسه، كما في attrib +p -u.
flowchart TB
accTitle: ترتيب التبديل من متصل فقط إلى متاح محلياً
accDescr: تشغيل attrib -p وحده على ملف متصل فقط يترك السمة U ولا يُجلب المحتوى الحقيقي؛ تحتاج إجراء تنزيل المحتوى الحقيقي أولاً بـ attrib +p ثم -p
u["متصل فقط (U)"] -->|attrib -p فقط| stay["يبقى U؛ لا يُجلب المحتوى الحقيقي"]
u -->|attrib +p| pin["مثبت (نزّل المحتوى الحقيقي)"]
pin -->|attrib -p| local["متاح محلياً"]
الشكل 8: التبديل من متصل فقط يحتاج ترتيب جلب المحتوى الحقيقي أولاً بـ +p ثم -p.
مثال حكم في PowerShell. النظر إلى السمات وحدها لا يسبب إماهة، لذا يمكنك استخدامها بثقة للتحقيق والفحوصات الجماعية.
function Test-CloudPlaceholder {
param([Parameter(Mandatory)][string]$Path)
$value = [int](Get-Item -LiteralPath $Path -Force).Attributes
[pscustomobject]@{
Path = $Path
Offline = ($value -band 0x00001000) -ne 0 # FILE_ATTRIBUTE_OFFLINE
RecallOnDataAccess = ($value -band 0x00400000) -ne 0 # ليس كل المحتوى محلياً
Pinned = ($value -band 0x00080000) -ne 0 # الاحتفاظ دائماً على هذا الجهاز
Unpinned = ($value -band 0x00100000) -ne 0 # متصل فقط
}
}
# فحص جماعي لملفات CSV تحت مجلد المستندات (المحتوى لا يُنزَّل).
# حل المسار بواجهة المجلدات المعروفة. تضمين اسم العرض
# "Documents" يمكن أن يصبح مساراً غير موجود حسب الاسم الحقيقي
# للمجلد (Documents مقابل اسماً محلياً) وتكوين KFM
Get-ChildItem ([Environment]::GetFolderPath('MyDocuments')) -Recurse -Filter *.csv |
ForEach-Object { Test-CloudPlaceholder $_.FullName } |
Where-Object RecallOnDataAccess |
Format-Table -AutoSize
التحويل إلى [int] لأن تعداد FileAttributes في .NET لا يعرّف أسماء مثل RECALL_ON_DATA_ACCESS. العمليات البتّية على القيمة العددية تحكم دون صعوبة.
5. مطبات يقع فيها تطبيق الأعمال
هذا الموضوع الرئيسي. شفافية العنصر النائب مريحة معظم الوقت، لكن مقرونة بنمط معالجة نموذجي لتطبيق أعمال تظهر بالأشكال الستة التالية.
5.1. الفتح يبدأ تنزيلاً تلقائياً — «لا يُفتح» دون اتصال
فتح ملف متصل فقط يبدأ الإماهة على الفور. متصلاً، مع ملف صغير، تكون سريعة بحيث لا تلاحظ، لكن عندما يتوقف OneDrive أو يُسجَّل الخروج أو يُوقَف مؤقتاً، أو تكون الشبكة غير سليمة، أو يكون الملف كبيراً، يصبح «ملفاً موجوداً لكنه لا يُفتح». يمكن أن يعود الخطأ كرمز من عائلة ملفات السحابة مثل ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING (0x8007016A، “The cloud file provider is not running”)، أو يُلاحَظ كمهلة في جانب التطبيق.8
مطب إضافي أن فحص الوجود المكافئ لـ File.Exists()، والحصول على السمات أو الحجم، ينجح. تحصل على نمط خطأ لا تفسّره حدس القرص المحلي: «نجح فحص الوجود، لكن القراءة فشلت».
flowchart TB
accTitle: فروع عند الوصول إلى ملف متصل فقط
accDescr: فحص الوجود والحصول على السمات والحجم ينجح، لكن قراءة المحتوى تبدأ الإماهة؛ إذا كان OneDrive يعمل والشبكة سليمة يمكنك القراءة بعد التنزيل، وإلا تفشل بخطأ مثل 0x8007016A أو مهلة
check["فحص الوجود، أو الحصول على السمات أو الحجم"] --> ok1["ينجح"]
open["قراءة المحتوى"] --> hyd["تبدأ الإماهة"]
hyd --> cond{"OneDrive يعمل والشبكة سليمة؟"}
cond -->|نعم| read["قابل للقراءة بعد التنزيل"]
cond -->|لا| err["خطأ مثل 0x8007016A، أو مهلة"]
الشكل 9: يمكن أن ينجح فحص الوجود بينما تفشل القراءة. النجاح أو الفشل يعتمد على عمل OneDrive وعلى الشبكة.
5.2. عملية دفعية تستحث تنزيل كل ملف
وجّه دفعة تقرأ كل ملف في مجلد، أو حساب تجزئة، أو بحثاً نصياً كاملاً، أو نسخاً احتياطياً منزلي الصنع إلى شجرة تحت OneDrive وتُستحث إماهة كل ملف تلمسه. لمجلد بعدة غيغابايت تصبح العملية بطيئة جداً، ويملأ التنزيل القرص أيضاً، وعلى حاسوب منخفض السعة يدعو نقص المساحة الحرة فشلاً مختلفاً. السعة التي كان يفترض أن توفرها الملفات عند الطلب تختفي في مسح كامل واحد.
كذلك، إذا سبب التطبيق إماهة دون إجراء مستخدم صريح، يمكن أن يعرض Windows إشعاراً ويعطي المستخدم خيار الحظر. بعد الحظر يستمر ذلك التطبيق في فشل التنزيلات (يمكن رفعه بـ «التنزيلات التلقائية للملفات» في الإعدادات). هذا أحد أسباب «يفشل الاستيراد على حاسوب معيّن فقط».4
flowchart TB
accTitle: كيف تستحث دفعة تنزيل كل ملف
accDescr: دفعة تحت OneDrive تستحث إماهة كل ملف تلمسه فتسبب تأخيراً وضغطاً على القرص، وإذا حظر المستخدم على الإشعار تستمر التنزيلات في الفشل بعد ذلك
scan["دفعة تحت OneDrive"] --> touch["إماهة كل ملف يُلمس"]
touch --> cost["تأخير معالجة وضغط على القرص"]
touch --> toast["يمكن أن يظهر إشعار"]
toast --> block{"هل حظر المستخدم؟"}
block -->|نعم| fail["تستمر التنزيلات في الفشل بعد ذلك"]
block -->|لا| cont["يستمر التنزيل"]
الشكل 10: الدفعة تستحث إماهة كل ملف، وإذا حُظرت على الإشعار تستمر الإخفاقات بعد ذلك.
5.3. سلوك خاطئ لكود لا يتوقع السمات
كود لا يعرف FILE_ATTRIBUTE_OFFLINE أو RECALL_ON_DATA_ACCESS يسيء التصرف في مواضع غير متوقعة.
- تُختبر السمات للمساواة التامة (
attributes == FileAttributes.Archiveوما شابه)، فيُستبعد العنصر النائب أو يُعامل كخطأ بوصفه «ملفاً غير متوقع» - قرار استبعاد في أداة نسخ احتياطي أو مزامنة يفسّر سمة OFFLINE بأنها «أُرسلت بالفعل إلى شريط» ويتخطى (أو، بالعكس، يجلب كل ملف كان ينبغي استبعاده)
- فحص للقراءة فقط أو عملية على بت الأرشيف يكسر تركيبة السمات
flowchart TB
accTitle: أنماط سوء سلوك كود لا يتوقع السمات
accDescr: كود لا يعرف سمات العنصر النائب يسيء التصرف كاستبعاد أو معالجة خطأ من اختبار مساواة تامة، أو تخطٍ أو جلب كامل من سوء تفسير OFFLINE، أو كسر تركيبة السمات
code["كود لا يتوقع السمات"] --> m1["اختبار مساواة تامة"]
code --> m2["يسيء تفسير OFFLINE"]
code --> m3["عملية سمات تكسر التركيبة"]
m1 --> r1["يُستبعد أو يُخطئ كغير متوقع"]
m2 --> r2["تخطي، أو جلب كامل"]
الشكل 11: كود لا يعرف OFFLINE أو سمات عائلة RECALL يسيء التصرف كاستبعاد أو تخطٍ خاطئ أو تدمير سمات.
إرشاد مايكروسوفت لمطوّري المرشحات الصغيرة يقول صراحة ألا تُصدر قراءة أو كتابة غير حذرة إلى ملف يحمل RECALL_ON_DATA_ACCESS. الوثيقة موجّهة إلى برامج تشغيل النواة، لكن مبدأ «لمس محتوى ملف بهذه السمة = تحدث تكلفة جلب» ينطبق كما هو على تطبيق وضع المستخدم.10
5.4. تفاعل FileSystemWatcher والمزامنة
راقب مجلداً تحت OneDrive بـ FileSystemWatcher فتحصل ليس فقط على إجراءات المستخدم بل أيضاً على عدد كبير من الأحداث من نشاط تطبيق المزامنة. في كل مرة تُزامَن فيها تغيير على جهاز آخر، وفي كل مرة تغيّر فيها الإماهة أو نزعها السمات أو الحجم، يمكن أن يُطلق حدث Changed. أبعد من ذلك، تصميم يكتب نتيجة المراقبة والاستيراد إلى المجلد نفسه يصبح «عاصفة إشعارات تغيير» في حلقة كتابة ← رفع ← تحديث سمات ← حدث آخر. تخفيف الأحداث وتصميم فحص المحتوى الحقيقي مشروحان في «كيفيّة استخدام FileSystemWatcher بأمان»، لكن تحت OneDrive الحاجة أعلى بدرجة.
flowchart TB
accTitle: حلقة إشعارات التغيير من المراقبة وإعادة الكتابة
accDescr: إذا كتب تطبيق مراقبة تلقى حدث تغيير نتيجة الاستيراد إلى المجلد نفسه، فإن رفع تطبيق المزامنة وتحديث السمات يطلق حدثاً آخر، فتصبح حلقة — عاصفة إشعارات تغيير
ev["حدث تغيير"] --> proc["تطبيق المراقبة يستورد"]
proc --> write["إعادة الكتابة إلى المجلد نفسه"]
write --> up["تطبيق المزامنة يرفع"]
up --> attr["تُحدَّث السمات أو الحجم"]
attr --> ev
sync["مزامنة تغيير من جهاز آخر"] -.-> ev
الشكل 12: كتابة نتيجة الاستيراد إلى المجلد نفسه تصبح حلقة ينتج فيها نشاط تطبيق المزامنة حدثاً آخر.
5.5. تعارضات المزامنة أثناء قفل حصري، وملفات «نسخة»
بينما يفتح تطبيق أعمال ملفاً بقفل حصري، لا يستطيع تطبيق المزامنة رفع ذلك الملف ولا تحديثه. وضع تطبيق يمسك قفلاً طويلاً (Access .accdb، ملف بيانات بصيغة منزلية، ملف سجل، وما شابه) تحت OneDrive يجعل أخطاء المزامنة الحالة الطبيعية. بالمقابل، عندما يُحرَّر الملف نفسه على عدة حواسيب، يحاول تطبيق المزامنة الاحتفاظ بالطبعتين وينتج ملفاً مكرراً باسم حاسوب أو نسخة تعارض مثل «— نسخة». استيراد يفترض «مجلد واحد، ملف واحد» يسيء التصرف على هذا المكرر. أساسيات تصميم القفل في «التحكّم الآمن في تزامن تكامل الملفّات».
flowchart TB
accTitle: مشكلات المزامنة بسبب قفل حصري وتحرير متعدد الحواسيب
accDescr: بينما يفتح التطبيق ملفاً بقفل حصري لا يستطيع تطبيق المزامنة التحديث وتصبح أخطاء المزامنة الحالة الطبيعية؛ تحرير الملف نفسه على عدة حواسيب ينتج نسخة تعارض ويسقط افتراض مجلد-واحد-ملف-واحد
lock["التطبيق يفتح بقفل حصري"] --> nosync["لا يمكن المزامنة؛ الأخطاء تصبح طبيعية"]
multi["الملف نفسه يُحرَّر على عدة حواسيب"] --> conflict["تُنتَج نسخة تعارض"]
conflict --> dup["مكرر باسم حاسوب أو نسخة"]
dup --> bad["يسقط افتراض مجلد-واحد-ملف-واحد"]
الشكل 13: القفل الحصري يجعل أخطاء المزامنة الحالة الطبيعية، والتحرير على عدة حواسيب يدعو سوء تصرف من نسخة تعارض.
5.6. مكافحة الفيروسات ومفهرس البحث يستحثان الإماهة
ليس تطبيق الأعمال وحده من يقرأ محتوى الملفات. المسح الكامل لبرنامج مكافحة الفيروسات، ومفهرس البحث، يستحثان الإماهة أيضاً إن لمسا محتوى عنصر نائب. Microsoft Defender ومنتجات مشابهة تتخطى الملفات التي تحمل سمة RECALL_ON_DATA_ACCESS عند المسح عند الطلب، لكن هذه استجابة جانب المنتج، ولا يمكنك افتراض أن كل منتج أمني سيُظهر العناية نفسها. إن رأيت أعراضاً مثل «الشبكة والقرص يبلغان الذروة كل ليلة عند المسح» أو «ملفات كان يفترض أن تكون متصل فقط تجسّدت كلها بحلول الصباح»، اشتبه بهذا الخط.14
flowchart TB
accTitle: إماهة يستحثها منتج أمني أو مفهرس البحث
accDescr: عندما يلمس مسح كامل أو مفهرس البحث محتوى عنصر نائب، منتج يحترم سمة RECALL يتخطى، أما منتج لا يحترمها فيُماهي كل ملف ويسبب ضغط نطاق ليلي أو تجسيداً صباحياً
av["مسح كامل أو مفهرس البحث"] --> care{"يحترم سمة RECALL؟"}
care -->|منتج يحترمها| skip["يتخطى العنصر النائب"]
care -->|منتج لا يحترمها| hyd["يلمس المحتوى ويُماهي"]
hyd --> sym1["النطاق والقرص يبلغان الذروة ليلاً"]
hyd --> sym2["بحلول الصباح تجسّدت الملفات كلها"]
الشكل 14: مسح لا يحترم السمة يستحث إماهة كل ملف، ويظهر كحمل ليلي أو تجسيد صباحي.
6. استجابة تطوير التطبيق — احترم العناصر النائبة
السياسة الأساسية كمطور هي معاملة العنصر النائب لا كـ «ملف معطوب» بل كـ «ملف له تكلفة جلب».
- احكم من السمات عند التعداد، ولا تفتح بلا تروٍّ. في مسح مجلد، أكّد أولاً من السمات (حكم الفصل 4) ما إن كان متصل فقط، وافتح فقط الملفات التي تحتاج محتواها. أعطِ معالجة «غير قاتلة إن غابت» — جمع السجلات، حساب التجزئة، توليد المعاينات — خيار تخطي العناصر النائبة.
// عرّف كأرقام قيماً لا يعرّفها FileAttributes في .NET
const FileAttributes RecallOnDataAccess = (FileAttributes)0x00400000;
const FileAttributes RecallOnOpen = (FileAttributes)0x00040000;
static bool IsCloudPlaceholder(FileAttributes attributes) =>
(attributes & (RecallOnDataAccess | RecallOnOpen | FileAttributes.Offline)) != 0;
foreach (var file in new DirectoryInfo(watchFolder).EnumerateFiles("*.csv"))
{
if (IsCloudPlaceholder(file.Attributes))
{
log.Warn($"{file.Name} متصل فقط؛ يُتخطى هذه المرة");
continue;
}
Import(file.FullName);
}
flowchart TB
accTitle: مسار الحكم من السمات عند التعداد ثم الفتح
accDescr: في مسح مجلد أكّد السمات أولاً عند التعداد؛ إن كان عنصراً نائباً تخطَّ واترك سجل تحذير، وشغّل الاستيراد فقط على الملفات الأخرى حتى تُتجنب الإماهة غير الحذرة
enum["أكّد السمات عند التعداد"] --> ph{"عنصر نائب؟"}
ph -->|نعم| skip["تخطَّ واترك سجل تحذير"]
ph -->|لا| imp["شغّل الاستيراد"]
skip -.-> note["سياسة فتح الملفات التي تحتاج محتواها فقط"]
الشكل 15: احكم من السمات عند التعداد وتخطَّ العنصر النائب دون فتحه حتى تُتجنب الإماهة غير الحذرة.
- لاحظ أن FILE_FLAG_OPEN_NO_RECALL ليس ضماناً لـ «لا تنزّل». تحديد هذا العلم على CreateFile يمكن أن يشير إلى نية أن «البيانات الحاصل عليها تُترك في الجانب البعيد ولا تُكتب إلى التخزين المحلي». لكنه علم فقط لعدم جعل البيانات الحاصل عليها مقيمة محلياً؛ إن قرأت المحتوى، نقل البيانات نفسه ما زال يحدث. إن أردت تجنب النطاق والتأخير نفسيهما، اكتفِ بالسمات والحجم والطوابع الزمنية — لا تطلب وصول قراءة (افتح بحقوق وصول 0، استخدم البيانات الوصفية من نتيجة التعداد). هذا الأأمن.9
flowchart TB
accTitle: أثر وحدود FILE_FLAG_OPEN_NO_RECALL
accDescr: FILE_FLAG_OPEN_NO_RECALL علم لعدم جعل البيانات الحاصل عليها مقيمة محلياً؛ إن قرأت المحتوى يحدث نقل البيانات نفسه، فإن أردت تجنب النقل فالأأمن الاكتفاء ببيانات وصفية مثل السمات
flag["افتح بعلم NO_RECALL"] --> read["اقرأ المحتوى"]
read --> transfer["يحدث نقل بيانات"]
transfer --> nolocal["لا يصبح مقيماً محلياً"]
meta["اكتفِ بالبيانات الوصفية وحدها"] --> safe["لا يحدث نقل؛ الأأمن"]
الشكل 16: FILE_FLAG_OPEN_NO_RECALL يمنع الإقامة المحلية فقط؛ إن أردت تجنب النقل نفسه فاكتفِ بالبيانات الوصفية وحدها.
- ضع «هذا تحت OneDrive» في رسالة الخطأ. عند فشل قراءة، مجرد تأكيد ما إن كان المسار المستهدف تحت
%OneDrive%وإدراجه في الرسالة يقلل كثيراً وقت الفرز للميدان ومكتب المساعدة. إن رصدت خطأ من عائلة ملفات السحابة مثل 0x8007016A، المثالي إخبار المستخدم «يرجى فحص حالة OneDrive». - لا تضع مجلد بيانات التطبيق تحت OneDrive. في بيئة KFM، «المستندات» أيضاً تحت OneDrive. ضع إعدادات التطبيق وقاعدته وملفات العمل في
%ProgramData%أو%LocalAppData%، ولا تختر سطح المكتب أو المستندات كموقع حفظ افتراضي أو مجلد استيراد افتراضي. كيف تقرر ماذا يوضع أين ملخّص في «كيف تختار مكان حفظ بيانات تطبيق Windows محليّاً». - قرر السلوك عندما يختار المستخدم موقعاً تحت OneDrive. لتطبيق يدع المستخدم يختار موقع حفظ، أدرج في المواصفة مسبقاً قرار تصميم مثل التحذير عندما يكون المسار المختار تحت OneDrive (تحت مسار متغيري البيئة
OneDrive/OneDriveCommercial)، أو رفض وضع ملف قفل أو قاعدة بيانات فقط.
7. استجابة جانب تقنية المعلومات — تحكم بالتثبيت والسياسة
من موقع تقنية المعلومات، التشغيل الواقعي ليس «أوقف الملفات عند الطلب بالكامل» بل ضمان المحتوى الحقيقي فقط حيث يحتاجه العمل.
- ثبّت المجلدات التي يقرأها تطبيق الأعمال. اختر «الاحتفاظ دائماً على هذا الجهاز» من قائمة النقر الأيمن في المستكشف، أو شغّل
attrib +p -u <folder> /s /dمن سكربت تصوير (تحدد-uفي الوقت نفسه حتى تُبدَّل مزيج الملفات المتصلة فقط بالفعل إلى مثبت بموثوقية). الملف المثبت مضمونة محتوياته الحقيقية محلياً وهو أيضاً خارج التحويل التلقائي إلى متصل فقط المذكور لاحقاً.72 - اضبط KFM والملفات عند الطلب «قصداً»، لا «وجدناها مفعّلة عندما انتبهنا». السياسات الرئيسية (Group Policy / Intune) كما يلي.111
| الغرض | السياسة (قيمة السجل) | الأثر |
|---|---|---|
| التحكم في الملفات عند الطلب | Use OneDrive Files On-Demand (FilesOnDemandEnabled) | تشغيل: المستخدمون الجدد افتراضياً متصل فقط. إيقاف: مزامنة كاملة كلاسيكية |
| تطبيق KFM بالجملة | Silently move Windows known folders to OneDrive (KFMSilentOptIn) | انقل سطح المكتب وما شابه دون إجراء مستخدم |
| منع KFM | Prevent users from moving their Windows known folders to OneDrive (KFMBlockOptIn) | امنع نقل المجلدات المعروفة |
| منع إيقاف KFM | Prevent users from redirecting their Windows known folders to their PC (KFMBlockOptOut) | امنع المستخدم من إيقافه |
| تقليل سعة مواقع الفريق | Convert synced team site files to online-only (DehydrateSyncedTeamSites) | اجعل مواقع الفريق المزامَنة متصل فقط (لاحظ أنها تعمل في اتجاه اختفاء المحتوى الحقيقي) |
- اعرف كيف يتحرك Storage Sense. لدى Storage Sense ميزة ترجع تلقائياً ملفات سحابية لم تُفتح لعدد من الأيام إلى متصل فقط، ويمكنك ضبط عدد الأيام بالسياسة (ConfigStorageSenseCloudContentDehydrationThreshold). الافتراضي 0 (لا تُرجع تلقائياً)، لكن إن فعّلها مستخدم من شاشة الإعدادات، أو ضبطتها المنظمة لأجهزة منخفضة السعة، يحدث «ملف فُتح الأسبوع الماضي عاد إلى أيقونة سحابة» كسلوك طبيعي. الملف المثبت خارج النطاق، لذا «ثبّت مجلدات العمل» يعمل هنا أيضاً.122
flowchart TB
accTitle: فروع التحويل التلقائي إلى متصل فقط لدى Storage Sense
accDescr: في التحرير التلقائي لـ Storage Sense، الملف المثبت خارج النطاق ويُحفظ المحتوى الحقيقي؛ ملف غير مثبت لم يُفتح لعدد من الأيام يُرجع إلى متصل فقط
ss["التحرير التلقائي لـ Storage Sense"] --> pin{"مثبت؟"}
pin -->|نعم| stay["خارج النطاق؛ يُحفظ المحتوى الحقيقي"]
pin -->|لا| old{"لم يُفتح لعدد من الأيام؟"}
old -->|نعم| dehyd["يُرجع إلى متصل فقط"]
old -->|لا| keep["يُحفظ المحتوى الحقيقي"]
ss -.-> def["الافتراضي 0 لا يُرجع تلقائياً"]
الشكل 17: يُرجع Storage Sense ملفاً لم يُفتح لعدد من الأيام إلى متصل فقط، لكن التثبيت خارج النطاق.
- قدّر الأثر قبل تعطيل الملفات عند الطلب. تعطيل FilesOnDemandEnabled يصبح مزامنة تنزيل كامل كلاسيكية، لكن استهلاك القرص وحمل النطاق لأول مزامنة يقفزان. توصي مايكروسوفت بتركها مفعّلة، وعامل التعطيل كإجراء محدود بعد التأكد أن «حجم بيانات المستخدمين المستهدفين صغير» و«هناك هامش قرص».112
- أدخله في إجراء الدعم. وضع إجراء الفرز في الفصل التالي في قالب الاستعلام «ملف على سطح المكتب لا يُفتح» يحفظ جودة الاستجابة حتى عندما يتغير من يتولى الأمر.
8. إجراء الفرز — عندما يُقال لك «الملف لا يُفتح»
عندما تتلقى الاستشارة، أكّد من الأعلى إلى الأسفل.
| # | ما يؤكَّد | كيف | ما تتعلمه |
|---|---|---|---|
| 1 | هل المسار تحت OneDrive؟ | أكّد جذر المزامنة بـ echo %OneDrive% وطابقه مع المسار المستهدف. أكّد أيضاً المسار الحقيقي لـ «سطح المكتب» في شريط عنوان المستكشف |
ما إن كان KFM / OneDrive متورطاً |
| 2 | حالة الملف | أكّد U (متصل فقط) و P (مثبت) و O بـ attrib <path>. انظر أيضاً «الحجم على القرص» في الخصائص |
ما إن كان المحتوى الحقيقي محلياً، أم هو عنصر نائب |
| 3 | هل OneDrive يعمل | أيقونة شريط المهام (مسجّل الدخول، موقف مؤقتاً، خطأ)، Get-Process OneDrive |
ما إن كانت الإماهة ممكنة. 0x8007016A عادة توقف أو سوء تكوين8 |
| 4 | الشبكة | وكيل الشركة، النطاق، قابلية الوصول إلى خدمة OneDrive | ما إن كان التنزيل نفسه ممكناً |
| 5 | مساحة القرص الحرة | المساحة الحرة على المجلد المستهدف. عند سعة منخفضة توجد أيضاً سياسة تجعل OneDrive يحظر التنزيلات | عامل آخر لفشل الإماهة |
| 6 | سجل الفشل | سجّل رمز خطأ التطبيق ووقت حدوثه، وطابقه مع عرض خطأ تطبيق المزامنة | ما إن كانت المشكلة في جانب التطبيق أم جانب OneDrive |
الإجراء المؤقت هو النقر الأيمن على المجلد المستهدف واختيار «الاحتفاظ دائماً على هذا الجهاز» (أو attrib +p /s /d). ذلك يرتّب المحتوى الحقيقي محلياً ويمكن استئناف العمل. فوق ذلك، قرر ما إن كان السبب الجوهري في جانب التطبيق (الفصل 6) أم جانب تقنية المعلومات (الفصل 7) كاستجابة دائمة.
flowchart TB
accTitle: المسار من إجراء مؤقت إلى استجابة دائمة
accDescr: كإجراء مؤقت، ضبط المجلد المستهدف على الاحتفاظ دائماً على هذا الجهاز يرتّب المحتوى الحقيقي محلياً حتى يُستأنف العمل؛ فوق ذلك تقرر ما إن كان السبب الجوهري في جانب التطبيق أم تقنية المعلومات وتتقدم إلى استجابة دائمة
aid["ثبّت كإجراء مؤقت"] --> restore["يُرتَّب المحتوى الحقيقي محلياً"]
restore --> resume["يُستأنف العمل"]
resume --> judge{"أين السبب الجوهري؟"}
judge -->|جانب التطبيق| dev["إلى استجابة الفصل 6"]
judge -->|جانب تقنية المعلومات| ops["إلى استجابة الفصل 7"]
الشكل 18: الإجراء المؤقت هو التثبيت وترتيب المحتوى الحقيقي واستئناف العمل؛ الاستجابة الدائمة تتقدم بعد تقرير ما إن كان جانب التطبيق أم تقنية المعلومات.
إذا أكّدت حتى هنا و«المسار ليس تحت OneDrive» و«ليس عنصراً نائباً أيضاً»، تنتقل إلى أسباب معتادة أخرى مثل مجلد مشترك أو طول المسار. «مطبّات محرك الشبكة ومسار UNC» و«MAX_PATH ومطبّات المسارات وأسماء الملفّات في Windows» هما الخريطة لما يلي.
9. ملخص
- قد يكون KFM نقل سطح المكتب والمستندات والصور الحقيقية تحت
C:\Users\<الاسم>\OneDrive\. تطبيق يفترض مساراً ثابتاً ينكسر هنا. الحل بواجهات المجلدات المعروفة هو الخطوة الأولى. - الملفات عند الطلب مفعّلة افتراضياً، والعناصر النائبة بلا محتوى محلي موجودة كأمر طبيعي. العنصر النائب نقطة إعادة تحليل لـ Cloud Files API (cldflt.sys)، وفتحه يُماهي تلقائياً.
- يمكن الحكم على الحالة من سمات الملف (OFFLINE / RECALL_ON_DATA_ACCESS / PINNED / UNPINNED) وتظهر كـ O و P و U في attrib. فحص السمات وحدها لا يسبب تنزيلاً.
- حوادث تطبيقات الأعمال تظهر كفشل إماهة دون اتصال، وتنزيل كامل من عملية دفعية، وكود لا يتوقع السمات، وتفاعل FileSystemWatcher والمزامنة، وتعارض قفل حصري مع المزامنة، وإماهة يستحثها منتج أمني.
- في جانب التطبيق، الأساس «احكم من السمات ولا تفتح بلا تروٍّ»، و«لا تضع مجلد البيانات تحت OneDrive»، و«قل إنه تحت OneDrive عندما تُخطئ».
- في جانب تقنية المعلومات، تصنع الحالة المقصودة بـ «تثبيت مجلدات العمل» و«تحكم سياسة KFM والملفات عند الطلب وStorage Sense».
- يمكن السير في الفرز آلياً بترتيب المسار → attrib → عمل OneDrive → الشبكة → المساحة الحرة → السجل.
في المرة التالية التي يُقال لك فيها «الملف موجود لكنه لا يُفتح»، اسأل هذا أولاً.
هل هذا الملف حقاً على القرص المحلي؟ أم أن مظهر السحابة وحده جالس هناك؟
مقالات ذات صلة
- The Depths of Windows I/O (Part 5) — NTFS Internals: Understanding the File System Through the MFT
- كيفيّة استخدام FileSystemWatcher بأمان - الأحداث المفقودة والإشعارات المكرّرة وفخاخ كشف الاكتمال
- مطبّات محرك الشبكة ومسار UNC ── الممارسة العمليّة للتعامل مع خادم الملفّات (المجلّد المشترك) في تطبيقات الأعمال
- التحكّم الآمن في تزامن تكامل الملفّات - أفضل الممارسات لـ file lock والمطالبة الذرّيّة والمعالجة idempotent
- كيف تختار مكان حفظ بيانات تطبيق Windows محليّاً ── جدول قرار بين SQLite وJSON وRegistry وAccess
- MAX_PATH ومطبّات المسارات وأسماء الملفّات في Windows ── حدّ 260 حرفاً، الأسماء المحجوزة، النقطة الأخيرة، حساسيّة الأحرف
مجالات الاستشارة ذات الصلة
شركة كومورا سوفت ذ.م.م. تتولى التحقيق في أعطال تطبيقات الأعمال التي تشمل OneDrive والتخزين السحابي — «استيراد كان يعمل لم يعد يعمل بعد استبدال الحاسوب»، «ملف لا يُفتح إلا على حاسوب معيّن» — وتصميم ومعالجة ملفات ومراقبة تفترض عناصر نائبة، ومراجعات تصميم موقع الحفظ في بيئة KFM / الملفات عند الطلب. البدء بعزل العَرَض مناسب — لا تتردد في التواصل معنا.
- تطوير تطبيقات ويندوز
- التحقيق في الأخطاء وتحليل السبب الجذري
- الاستشارات التقنية ومراجعة التصميم
- التواصل معنا
روابط مرجعيّة
-
Microsoft Learn, Redirect and move Windows known folders to OneDrive. أن KFM ينقل سطح المكتب والمستندات والصور تحت OneDrive، وسياسات الاقتراح والتطبيق الصامت ومنع الإيقاف ومنع النقل. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Recommended sync app configuration. أن الملفات عند الطلب مفعّلة افتراضياً وتركها مفعّلة موصى به، وأن Storage Sense ينظّف «الملفات المتاحة محلياً غير المثبتة». ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Support, Save disk space with OneDrive Files On-Demand for Windows. حالات الملفات عند الطلب الثلاث وإجراءات «الاحتفاظ دائماً على هذا الجهاز» و«تحرير مساحة». ↩ ↩2 ↩3
-
Microsoft Learn, Build a Cloud Sync Engine that Supports Placeholder Files. نظرة على Cloud Files API، وأن العنصر النائب يحمل نحو 1KB من البيانات الوصفية فقط وفتحه يُماهي تلقائياً، وأن نقطة إعادة التحليل مخفية عن العمليات غير محرك المزامنة وتلك تحت %systemroot%، وإشعار الإماهة في الخلفية وحظرها. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, File Attribute Constants. تعريفات وقيم FILE_ATTRIBUTE_OFFLINE و RECALL_ON_OPEN و RECALL_ON_DATA_ACCESS و PINNED و UNPINNED. ↩ ↩2
-
Microsoft Learn, attrib. صيغة أمر attrib وأعلام السمات بما فيها O (دون اتصال) و P (مثبت) و U (غير مثبت). ↩ ↩2
-
Microsoft Learn, Query and set Files On-Demand states in Windows. تأكيد حالة الملفات عند الطلب بـ attrib وضبطها بـ +p و -p و +u، وخدمة CldFlt. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Error 0x8007016a when copying files in OneDrive. أن الخطأ 0x8007016A “The cloud file provider is not running” يحدث عندما يكون OneDrive سيئ التكوين أو متوقفاً، وخطوات الحل. ↩ ↩2 ↩3
-
Microsoft Learn, CreateFileW function (fileapi.h). أن FILE_FLAG_OPEN_NO_RECALL علم يشير إلى أن «البيانات المطلوبة تُترك في الجانب البعيد ولا تُنقل إلى التخزين المحلي» (لا يمنع الحصول على البيانات نفسها)، والحصول على السمات بالفتح بحقوق وصول 0. ↩ ↩2
-
Microsoft Learn, Handling placeholders. أن العنصر النائب يجب أن يحمل FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS، وأن قراءة أو كتابة غير حذرة لملف بهذه السمة تدعو إماهة غير ضرورية أو تلف بيانات. ↩ ↩2
-
Microsoft Learn, IT Admins - Use OneDrive policies to control sync settings. سياسات تكوين تطبيق مزامنة OneDrive بـ GPO/Intune، بما فيها FilesOnDemandEnabled و KFMSilentOptIn و KFMBlockOptIn و KFMBlockOptOut و DehydrateSyncedTeamSites. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Policy CSP - Storage. أن Storage Sense يمكنه جعل ملفات سحابية لم تُفتح لعدد من الأيام متصل فقط، والافتراضي 0 (لا تُرجع تلقائياً)، وضبط 0–365 يوماً. ↩ ↩2 ↩3
-
Microsoft Support, What do the OneDrive icons mean?. معنى أيقونات الحالة المعروضة في المستكشف، مثل السحابة وعلامات الاختيار. ↩
-
Microsoft Learn, Plan for an Azure File Sync deployment. أن مسح مكافحة الفيروسات يمكن أن يسبب استدعاء ملف يحمل سمة RECALL_ON_DATA_ACCESS، وأن Microsoft Defender ومنتجات مشابهة تتخطى الملفات بهذه السمة عند المسح عند الطلب. ↩
مقالات ذات صلة
أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.
تطبيقات تتعطّل عند الاستئناف من السكون ── كيف تعمل أحداث الطاقة في Windows وكيف تبني تطبيقات أعمال تصمد أمامها
فتحت الحاسوب المحمول فوجدت اتّصالات تطبيق الأعمال ميّتة ── السبب تصميم لم يحسب حساب السكون. يغطّي المقال تدفّق إشعار WM_POWERBROADCAST، و...
DllMain وقفل المحمِّل ── السبب الحقيقي لعبارة «لا تفعل شيئاً في تهيئة الـDLL»
لماذا يجب ألا تستدعي LoadLibrary أو تتزامن مع مؤشّرات ترابط أخرى من DllMain. يستند المقال إلى المصادر الأوّليّة ليشرح كيف يسلسل قفل المحم...
ما الذي يعنيه «لا يستجيب» حقّاً ── كيف يقرِّر Windows أنّ تطبيقاً قد تجمّد، وكيف تصمِّم تطبيقات لا تتجمّد
«لا يستجيب» في Windows آليّة يحكم فيها نظام التشغيل أنّ نافذة لم تسترجع رسالة لمدّة 5 ثوانٍ ويستبدلها بنافذة شبح. يغطّي المقال دواخل ذلك ...
الإيقاظات الزائفة ── لماذا تستيقظ متغيّرات الشرط «دون إشعار» وكيف تنتظر بشكل صحيح على Windows
يمكن لانتظار متغيّر شرط أن يعود حتّى عندما لا يكون إشعار قد وصل (إيقاظ زائف). يشرح هذا المقال، من تنفيذ Windows، لماذا تسمح المواصفة بذلك...
WPR/WPA عمليّاً ── مدخل إلى تحقيق أداء المنظومة عند «الحاسوب كلّه بطيء»
مشكلات أداء مثل «الحاسوب كلّه بطيء» أو «بدء التشغيل بطيء» لا يتابعها مدير المهام يمكن تحقيقها بالتقاط أثر ETW على مستوى نظام التشغيل وقرا...
أين يتصل هذا الموضوع
ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.
تطوير تطبيقات ويندوز
ندعم تطوير برامج ويندوز للأعمال، وتكامل الأجهزة، وأدوات التواصل.
الأسئلة الشائعة
أسئلة شائعة حول موضوع هذه المقالة.
- تطبيق أعمال يقول «الملف غير موجود» ولا يستطيع قراءة CSV وضعته على سطح المكتب. لماذا؟
- في حالات كثيرة يكون مجلد سطح المكتب نفسه قد نُقل إلى C:\Users\<اسم المستخدم>\OneDrive\Desktop بواسطة Known Folder Move (KFM) في OneDrive، أو أصبح الملف عنصراً نائباً متصل فقط. تطبيق يفترض مساراً ثابتاً مثل C:\Users\<اسم المستخدم>\Desktop لا يجد الملف بعد النقل. حتى عندما يكون المسار صحيحاً، قد يفشل فتح ملف متصل فقط عندما يتوقف OneDrive أو تكون الشبكة غير سليمة. أكّد أولاً ما إن كان المسار المستهدف تحت OneDrive، وافحص بأمر attrib ما إن كانت U (متصل فقط) مضبوطة. كإجراء مؤقت يمكنك تأمين المحتوى الحقيقي محلياً بـ «الاحتفاظ دائماً على هذا الجهاز» من قائمة النقر الأيمن.
- هل يستطيع برنامج أن يعرف ما إن كان الملف متصل فقط؟
- نعم. يحمل العنصر النائب المتصل فقط سمات مثل FILE_ATTRIBUTE_OFFLINE و FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS (0x00400000)، لذا يمكنك الحكم على الحالة من سمات الملف دون تنزيل المحتوى. الحصول على السمات أو تعداد مجلد لا يسبب إماهة (تنزيلاً). في .NET بعض القيم غير معرّفة على FileAttributes، فتحول إلى عدد صحيح وتختبر بعمليات بتّية. إذا احتجت حقاً إلى الفتح دون قراءة المحتوى، تتوفر أيضاً وسيلة مثل FILE_FLAG_OPEN_NO_RECALL في CreateFile.
- هل إيقاف الملفات عند الطلب يحل المشكلة؟
- عامل الإيقاف كحل أخير. تعطيلها ينزّل كل ملف في نطاق المزامنة محلياً، فتصبح سعة القرص وحمل الشبكة لأول مزامنة كبيرين، ومايكروسوفت توصي أيضاً بتركها مفعّلة. عملياً أكثر مرونة أن تضبط فقط المجلدات التي يقرأها تطبيق الأعمال على «الاحتفاظ دائماً على هذا الجهاز» (تثبيتها). بشكل أعمق، الإصلاح الموثوق هو إعادة التصميم بحيث لا يقع مجلد بيانات التطبيق ومجلد الاستيراد تحت إدارة OneDrive.
- ضبطت «الاحتفاظ دائماً على هذا الجهاز»، لكن بعض الملفات تعود في النهاية إلى أيقونة سحابة. لماذا؟
- أكّد أولاً بأمر attrib أن الملف يحمل فعلاً التثبيت (السمة P). الملف المثبت خارج التحويل التلقائي إلى متصل فقط لدى Storage Sense، أما ملف «متاح محلياً» فقط لأن أحداً فتحه، دون تثبيت، فيمكن إرجاعه إلى متصل فقط بعد مدة حسب إعدادات Storage Sense والسياسة. إجراء المستخدم نفسه «تحرير مساحة»، وسياسة تجعل ملفات مواقع الفريق متصل فقط (DehydrateSyncedTeamSites)، يعيدان أيضاً أيقونة السحابة. للمجلدات التي يجب أن تبقى محلية للعمل، شغّل بالتثبيت على نطاق المجلد.
الملف الشخصي للمؤلف
صفحة الملف الشخصي لمؤلف المقالة.
غو كومورا
مؤسّس شركة كومورا سوفت ذ.م.م.
يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.