חוקי הפורום

מדריך לרג'יסטרי - Windows-Registry



  • הקדמה

    מה זה הדבר הזה "הרג'יסטרי"?
    הרג'יסטרי הוא סוג של מסד נתונים, DB, בעגה המקצועית אפשר להגדיר אותו כ-key value store. כלומר, מקום אחסון עבור רשומות בצורה של key = value (מפתח = ערך). כלומר לכל רשומה ב-DB יש שם (ה"מפתח") וערך (value).
    בעבר היו שומרים מידע כזאת בקבצי ini או קבצי תצורה אחרות.
    יש אמנם כמה מאפיינים ייחודיים לרג'יסטרי שמעניקים לו התאמה מיוחדת לאחסון של הגדרות מערכת.

    • בגישה להגדרות שמאוחסנות בקבצי INI מסורתיים, יש רק שליטה מוגבלת על ידי הרשאות ברמת הקובץ (אם אתה נותן הרשאות קריאה או כתיבה למשתמש מסויים לקובץ ה-INI, הוא קיבל גישה לכל ההגדרות שנמצאים בתוכו), משא"כ הגישה למפתחות רג'יסטרי אפשר להגדיר הרשאות ברמת המפתח, לכל מפתח אפשר להגדיר הרשאות גישה לעצמו.
    • ההגדרות ברג'יסטרי מסודרות בצורה היררכית ולא בצורה שטוחה. כך הכל יותר מסודר וזה מקל על מציאת דברים.
    • הרג'יסטרי תומך בעדכונים אטומיים (כמו ב-DB, זה סוג עדכון שאתה מורה לרג'יסטרי, שאו שכל העדכון נכנס או שכולו לא נכנס, אסור להשאר במצב שחלק מעודכן וחלק לא).

    מבנה הרג'יסטרי

    הרג'יסטרי בנויה בצורה היררכית כמו עץ. יש ענפים ויש עלים, הענפים הם מפתחות/תקיות והעלים הם הערכים.
    בראש ההיררכיה יש 5 מפתחות שורש (root keys). מתחתם יש עוד מפתחות וערכים.
    מפתח רגיסטרי = תקייה
    ערך רג'יסטרי = מפה (associative array) של name = value
    לכל ערך יכול להיות כמה רשומות של name = value.
    לכל ערך מותר גם רשומה אחת אנונימי בלי שם. בעורך הרג'יסטרי זה מופיע כ-(default)
    (כן כן, המינוחים פה קצת מבלבלים...)
    לכל רשומה יש גם כן סווג של סוג הדאטה שהוא מכיל.
    הנפוצים הם:

    • REG_SZ = מחרוזת (string, מחרוזת של תווים)
    • REG_DWORD = מספר
    • REG_BINARY = דאטה בינארי
    • REG_MULTI_SZ = רשימה של כמה מחרוזות
    • REG_EXPAND_SZ = מחרוזת שיכול לכלול משתני סביבה

    מתוך חמשת מפתחות השורש, שלשה מהם הם וירטואליים (כלומר, הם מיוצרים בצורה דינאמית על ידי מערכת ההפעלה ולא שמורים בדיסק הקשיח):

    • HKEY_CURRENT_USER משקף את התוכן של תקיית המשתמש הנוכחי שנמצא מתחת ל-HKEY_USERS‏.
    • HKEY_CLASSES_ROOT הוא שילוב של התוכן של HKCU\Software\Classes ו-HKLM\Software\Classes.
    • HKEY_CURRENT_CONFIG אודה ולא אבוש שלא ברור לי לגמרי מה מטרתו.

    השניים האחרים שהם העקריים הם:

    • HKEY_LOCAL_MACHINE שמקבץ תחתיו את ההגדרות שנוגעות למחשב בכללות.
    • HKEY_USERS שמתחתיו יש תקייה לכל משתמש במערכת עם ההגדרות המיוחדות למשתמש ההוא (חשוב לדעת שתתי תקייה אלו נטענים רק במקרה שהמשתמש מחובר).

    עד כאן המבנה הלוגי,
    לגבי המבנה הפיזי, חלק המבנה קיים רק בזכרון המחשב, שאר המבנה שמור בדיסק בקבצים שנקראים hives (כוורות, עיין כאן עבור ההסבר המשעשע לבחירת השם הזה).

    • הגדרות המשתמש (HKCU) נמצא בקובץ ‎%userprofile%\ntuser.dat‎
    • הגדרות המערכת (HKLM) נמצאים בתקיית: C:\Windows\System32\config.

    ממשקי גישה לרג'יסטרי

    ווינדוס מספקת כמה ממשקים לרג'יסטרי

    • regedit = עורך גרפי
    • reg = פקודה שאפשר להריץ בשורתהפקודה ובתוך סקריפטים
    • קבצי REG = אפשר לשלב לעדכן או למחוק ערכים מהרג'יסטרי על ידי הרצת קבצי REG
    • ממשק עבור תוכנות (API בלע"ז). כמובן כל הממשקים האחרים משתמשים ב-API הזו מתחת לשטח

    רכיבי ווינדוס העקריים שמשתמשים ברג'יסטרי

    שירותי מערכת
    שירותים הם תהליכים שרצים בלי התערבות משתמשים. בווינדוס, המילה "שירותים" כוללת גם כן דרייברים. כל ההגדרות הנוגעות לשירותי מערכת מאוחסנים בנתיב: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

    הגדרות קרנל או רכיבי ליבה אחרים HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    ועוד ב-HKEY_LOCAL_MACHINE\SYSTEM

    הגדרות תוכנה
    הגדרות ברמת מערכת: HKEY_LOCAL_MACHINE\SOFTWARE
    הגדרות ברמת משתמש: HKEY_CURRENT_USER\Software
    עבור תוכנות 32 סיביות:
    HKLM\SOFTWARE\WOW6432Node
    HKCU\SOFTWARE\WOW6432Node

    הגדרות רכיבי COM
    אל תשאל מה זה רכיבי COM... זה סיפור מורכב ביותר. אבל יש חלקים נרחבים של מערכת ווינדוס שבנויים על טכנולוגיית COM, וכדי שזה יעבוד צריך את החלק הזה של הרג'יסטרי...
    HKEY_CLASSES_ROOT
    גם שיוכי קבצים לתוכנות נמצאים (בעיקר) שם (אל תשאלו למה...).

    הגדרות לוח הבקרה ועוד
    HKEY_CURRENT_USER\Control Panel

    מדיניות קבוצתיות (GPO)
    בכמה מקומות מתחת לתקייות בשם policies. לדוגמה: HKLM\Software\Microsoft\Windows\CurrentVersion\Policies (מדיניות ווינדוס לכלל המערכת),
    HKCU\Software\Microsoft\Windows\CurrentVersion\Policies (מדיניות ווינדוס למשתמשים מסויימים),
    HKCU\Software\Policies, HKLM\SOFTWARE\Policies (מדיניות תוכנות אחרות)

    מציאת מיקום הגדרה ברג'יסטרי

    הנה מגיע החלק החשוב...
    א. חובה להיות מיומן בחיפושי גוגל... רוב המידע נמצא כבר שמה
    ב. procmon,
    ג. procmon,
    ד. ושוב procmon... 🙂

    ולקינוח:

    עריכת רגיסטרי לא מקוון

    אפשר לערוך הגדרות רג'יסטרי גם על מערכת "מתה"
    מייבאים את ה-hives לתוך עורך הרג'יסטרי במערכת "חיה" על ידי בחירת התפריט File -> Load Hive.
    חשוב לדעת איך עושים את זה כאשר רוצים לערוך הגדרות של מערכת הפעלה מתוך סביבת הריקוברי של ווינדוס

    לעוד פרטים טכניים מומלץ לקרוא את הכתבה בוויקיפידיה האנגלי
    יש שאלות? אשמח לנסות לתת מענה. (הרבה יותר קל לענות על שאלה ספציפית מאשר לכתוב סקירה על כל הנושא...)


התחבר כדי לפרסם תגובה