מדריך לרג'יסטרי - 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.
חשוב לדעת איך עושים את זה כאשר רוצים לערוך הגדרות של מערכת הפעלה מתוך סביבת הריקוברי של ווינדוסלעוד פרטים טכניים מומלץ לקרוא את הכתבה בוויקיפידיה האנגלי
יש שאלות? אשמח לנסות לתת מענה. (הרבה יותר קל לענות על שאלה ספציפית מאשר לכתוב סקירה על כל הנושא...)