كيف يمكنني التمييز برنامجياً الروابط الصلبة عن الملفات الحقيقية في Windows 7؟

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

  •  30-09-2019
  •  | 
  •  

سؤال

لدي فرق بين حجم الملفات ومساحة القرص المستخدمة (حجم الملف الكلي أكثر من حجم القرص). أفترض أن هناك العديد من الروابط الصعبة (لمكونات WINSXS) في Windows 7/Vista. ولكن كيف يمكنني التمييز برمجيًا الروابط الصلبة عن الملفات الحقيقية في Windows 7؟

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

المحلول

لا يمكنك ذلك ، لأن جميع الملفات هي روابط صعبة. لا حقا. الملف هو مجرد رابط صلب إلى قطعة بيانات - قائمة في دليل. (ربما تقصد symlinks؟ أنت يستطيع تمييز هؤلاء ...)

استخدم طرق Buildin التي توفرها Windows لحساب المساحة المستخدمة بدلاً من ذلك.

تعديل: المرجعي (التأكيد الألغام)

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

نصائح أخرى

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

Posix لديه stat وظيفة (تسمى _stat في Windows) يمكنها اكتشاف روابط متعددة إلى نفس الملف ، والتي سيكون لها نفس رقم "inode".

يستخدم getFileInformationByHandle () وتحقق من الإرجاع by_handle_file_information عضو NnumberOfLinks للحصول على قيمة> 1.

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