דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. כיצד ניתן לזהות התקן USB לפי הסיריאל שלו

כיצד ניתן לזהות התקן USB לפי הסיריאל שלו

מתוזמן נעוץ נעול הועבר תכנות
9 פוסטים 5 כותבים 433 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • משתמש מקצועןמ מנותק
    משתמש מקצועןמ מנותק
    משתמש מקצוען
    כתב ב נערך לאחרונה על ידי
    #1

    שלום וברכה
    [אני מתחיל ממש בC#]

    בניתי תוכנה פשוטה
    ואני מעונין שבעת הכנסת התקן חיצוני (USB)
    התוכנה תזהה את המספר הסיראלי שלו
    ותבצע פעולה מסויימת

    חיפשתי ולא מצאתי תשובה ברורה
    כיצד ניתן לזהות התקנים נשלפים לפי המספר הסידורי שלהם

    אשמח לדעת כיצד ניתן לעשות זאת
    בתודה מראש

    שואףש 2 תגובות תגובה אחרונה
    1
    • שואףש מנותק
      שואףש מנותק
      שואף
      השיב למשתמש מקצוען ב נערך לאחרונה על ידי
      #2

      @משתמש-מקצוען https://docs.microsoft.com/en-us/windows/win32/api/ioapiset/nf-ioapiset-deviceiocontrol

      ליצירת קשר: admin@i-call.me

      הידד! גישה למייל גם בלי מחשב ואינטרנט!

      yossizY תגובה 1 תגובה אחרונה
      1
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לשואף ב נערך לאחרונה על ידי
        #3

        @שואף זה לא ממש יכול לעזור למי שמצהיר על עצמו כ"מתחיל ממש בC#"

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה
        2
        • OdedDvirO מנותק
          OdedDvirO מנותק
          OdedDvir
          כתב ב נערך לאחרונה על ידי
          #4

          יש כאן תשובה טובה: https://stackoverflow.com/questions/620144/detecting-usb-drive-insertion-and-removal-using-windows-service-and-c-sharp

          תגובה 1 תגובה אחרונה
          2
          • שואףש מנותק
            שואףש מנותק
            שואף
            השיב למשתמש מקצוען ב נערך לאחרונה על ידי שואף
            #5

            @משתמש-מקצוען אמר בכיצד ניתן לזהות התקן USB לפי הסיריאל שלו:

            כיצד ניתן לזהות התקנים נשלפים לפי המספר הסידורי שלהם

            השאלה לא כל כך ברורה בעצם.
            אתה רוצה לדעת הסיריאלי של הכונן? או לזהות אותו לפי הסיריאלי (שאני לא מבין מה זה אומר)

            כדי לקבל הסיריאלי שלו, אתה יכול פשוט להריץ CMD
            רק שים לב שבכרטיסי SD יש עם זה בעייה, אני כבר לא זוכר בדיוק אבל אאל"ט זה יוצא תמיד אותו דבר.

            wmic DISKDRIVE get SerialNumber
            
            wmic diskdrive get PNPDeviceID
            

            ליצירת קשר: admin@i-call.me

            הידד! גישה למייל גם בלי מחשב ואינטרנט!

            משתמש מקצועןמ תגובה 1 תגובה אחרונה
            3
            • משתמש מקצועןמ מנותק
              משתמש מקצועןמ מנותק
              משתמש מקצוען
              השיב לשואף ב נערך לאחרונה על ידי משתמש מקצוען
              #6

              @שואף אני רוצה לבנות תוכנה
              שרצה כל הזמן במחשב
              וברגע שאני יכניס דיסק און קי שמזוהה בתוכנה
              התוכנה תציג טופס
              חשבתי שהדרך היחידה שאפשרית לזיהוי הדיסק און קי היא ע"י הסיריאל שלו (שאני יכול גם לשנות באופן ידני).
              אשמח לקבל הכוונה כיצד הקוד אמור להיות בנוי.
              [חשוב לי לציין שאני ממש מתחיל... ועדיין באמצע ללמוד ממדריכים את הבסיס עצמו, ואעפ"כ מכיר קצת את העסק ונהנה להעתיק קוד מ stackoverflow.com , לכן לא ממש הצלחתי עדיין בניסויים שלי].
              ואגב, הפקודות שהבאת לCMD לא מציגות לי את הסיריאל של הדיסק און קי. אלא רצף של ספרות ואותיות אחרות.

              רפאלר תגובה 1 תגובה אחרונה
              0
              • רפאלר מנותק
                רפאלר מנותק
                רפאל
                השיב למשתמש מקצוען ב נערך לאחרונה על ידי
                #7

                @משתמש-מקצוען לא ציינת את הסביבה שבה תרוץ התוכנה (Windows/Linux)

                משתמש מקצועןמ תגובה 1 תגובה אחרונה
                1
                • משתמש מקצועןמ מנותק
                  משתמש מקצועןמ מנותק
                  משתמש מקצוען
                  השיב לרפאל ב נערך לאחרונה על ידי
                  #8

                  @רפאל Windows

                  רפאלר תגובה 1 תגובה אחרונה
                  0
                  • רפאלר מנותק
                    רפאלר מנותק
                    רפאל
                    השיב למשתמש מקצוען ב נערך לאחרונה על ידי רפאל
                    #9

                    @משתמש-מקצוען ניתן לעשות שימוש במחלקה ManagementEventWatcher על מנת להירשם לאירועים במערכת המתאימים לשאילתות מותאמות אישית.

                    להלן מחלקה היפותטית לחלוטין אשר דוגמת את InstanceCreationEvent מדי 2 שניות על מנת לגלות ערכים חדשים מסוג Win32_DiskDrive (השימוש בWin32_DeviceChangeEvent אינו יתכן במקרה זה, משום שאינו מכיל כל מידע על המכשיר) במידה וערך חדש מסוג Win32_DiskDrive אכן נוצר, המתודה DeviceInsertedEvent שרשמנו כEvent handler תרוץ, במידה והמכשיר המסויים כבר התחבר בעבר, אנו נדפיס את הSerial Number לקונסול, במידה ולא, אנו נכניס אותו לרשימה של המכשירים המוכרים (familiarSerialNumbers), כך שהSerial Number יודפס בפעם הבאה שהמכשיר יחובר.

                    class FamiliarDeviceDetection
                    {
                        private readonly string _query = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_DiskDrive'";
                        private readonly List<string> _familiarSerialNumbers = new();
                    
                        public FamiliarDeviceDetection()
                        {
                            var watcher = new ManagementEventWatcher();
                            watcher.Query = new WqlEventQuery(_query);
                            watcher.EventArrived += DeviceInsertedEvent;
                            watcher.Start();
                        }
                    
                        private void DeviceInsertedEvent(object sender, EventArrivedEventArgs e)
                        {
                            var device = (ManagementBaseObject)e.NewEvent["TargetInstance"];
                    
                            if (device["SerialNumber"].ToString() is var serialNumber && _familiarSerialNumbers.Contains(serialNumber))
                            {
                                Console.WriteLine(serialNumber);
                            }
                            else _familiarSerialNumbers.Add(serialNumber);
                        }
                    }
                    

                     
                    דוגמא לשימוש במחלקה הנ"ל באפליקציית Console:

                    public void Main()
                    {
                        new FamiliarDeviceDetection();
                        Console.ReadLine();  // comment out unless in console application  
                    }
                    

                    על מנת להשתמש בManagementEventWatcher יש להוסיף לפרויקט את הספרייה System.Management אשר הייתה בעבר חלק מהFramework, אולם הושמטה במעבר לCore עקב היותה מותאמת לסביבת ווינדוס בלבד (במטרה לטהר את הפלטפורמה ממחלקות אשר אינן מותאמות לריצה על לינוקס ו-MacOS) WMI עושה שימוש בDCOM (טכנולוגיה השייכת ופועלת ע"ג ווינדוס בלבד).

                    ניתן להוסיף את הספרייה באמצעות הפקודה:

                    dotnet add package System.Management
                    

                    לחלופין ע"י הוספת השורה הבאה לקובץ הפרויקט (csproj):

                    <ItemGroup>
                        <PackageReference Include="System.Management" Version="6.0.0" />
                    </ItemGroup>
                    

                    ניתן להרחיב על WMI עוד רבות, מעט התעצלתי, אולם אשמח לענות על שאלות ספציפיות.

                    תגובה 1 תגובה אחרונה
                    10
                    • dovidD dovid העביר נושא זה מ-תכנות ב-

                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום