سؤال

وذات مرة وأنا أقرأ كيف كشف برمجيا للمجلدات NTFS شنت (يمكن أن يسبب العودية دوري عند البحث عبر مجلدات). الآن لا أستطيع العثور على وصلة .. لا أحد يعرف كيفية القيام بذلك؟

وتصاعد أنا مهتم في كشف هو عندما يتم تحميل مجلد واحد إلى مجلد آخر.

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

المحلول

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

ولكن، معظم الناس مجرد (1) للبحث عن ReparsePoint على قائمة سمات إرجاعها بواسطة DirectoryInfo.GetDirectories .

و(1) لاحظ أن NTFS تقاطع هو نوع معين من نقطة إعادة التوزيع ، ولكن ليس الوحيد. روابط رمزية، <الإضراب> ارتباطات ثابتة، (2) وأية بيانات أخرى يحددها المستخدم أيضا نقاط إعادة التوزيع.

و(2) يصيح. من الصعب صلات ليست نقاط إعادة التوزيع، انهم إدخالات الدليل فقط القياسية لافتا إلى ملف نفسه . بفضل روبن للحصول على تصحيح لي على ذلك.

نصائح أخرى

هل هذا من خلال WMI. انظر العينة في: http://msdn.microsoft.com /en-us/library/aa393244(VS.85).aspx

وأو محاولة هذه التعليمات البرمجية المصنوع من <لأ href = "http://www.microsoft.com/downloads/details.aspx؟familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en" يختلط = "noreferrer نوفولو "> WMI رمز الخالق :


using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\CIMV2", 
                    "SELECT * FROM Win32_DiskPartition"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_DiskPartition instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Type: {0}", queryObj["Type"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top