לפעמים, אם אתה משתמש ב-Windows, יש סיכוי שכבר היית צריך להריץ את הכלי regsvr32.exe
כדי "לרשום DLL". אם כן, סביר שלא היית מודע לדיוק של מה שקורה מתחת למכסה. כלי קריפטי זה משמש לניהול של בקרי Object Linking and Embedding (OLE) שרבות מיישמי Windows משתמשים בהם.
אך מה בדיוק הוא בקר OLE ולמה תרצה לרשום בקר OLE? במדריך הזה, תלמד את הדרכים השונות להתקין, להסיר, לרשום או לבטל את רישום בקר OLE בעזרת הכלי regsvr32.exe
.
דרישות מוקדמות
ודא שיש לך את הדרישות הבאות כדי להשתמש בכלי regsvr32.exe
:
- מאחר וכלי regsvr32.exe מובנה ברוב גרסאות ה-Windows, אתה צריך רק מחשב Windows עם חשבון מנהל.
- יהיה עליך להשתמש ב-PowerShell 7 כדי להשתמש בתסריט PowerShell שכלול במדריך זה.
מהם בקרי OLE?
לפני שתלמד כיצד להשתמש בכלי regsvr32.exe
, עליך להבין בצורה רודימנטרית מה ניהול כלי זה, בקרי OLE.
פקדים OLE הם טכנולוגיה המיועדת לחלונות שפותחה כדי לסייע בהטבעה ובקישור למסמכים ולאובייקטים אחרים. הטכנולוגיה התפתחה מאז והיא נבנתה על ידי מרכיבים שונים.
ייתכן ושמעת על מודל אובייקטי של רכיב (COM), מודל אובייקטי של רכיב פיזורי (DCOM) או בקרי ActiveX. כל אחת מהטכנולוגיות הללו נבנתה על ידי טכנולוגיית OLE או היא הרחבה שלה ומגדירה ממשק תקן לפונקציות שנכתבו בשפות שונות.
ActiveX הוא מיושן אך עדיין זמין דרך Internet Explorer ב- Windows 10, אך לא דרך Microsoft Edge.
הרשמת פקדים OLE
עכשיו שהבנת מה עושה כלי ה-regsvr32.exe
, זמן לרשום פקד OLE, וישנן מספר גרסאות של פקודות כדי לעשות זאת. תרגיש חופשי לבחור אחת מהגרסאות הבאות או פשוט לנסות כל אחת במקום.
אפשר לרשום פקדי OLE דרך PowerShell או דרך פקודת חלון פקודה של Windows. בכל מקרה, ודא שאתה מפעיל את שורת הפקודה שלך כמנהל כדי לוודא שהפקד רשום כראוי.
הצגת תוצאה גרפית
רישום קובץ DLL עם regsvr32
, בשימוש הפשוט ביותר, כולל עברת את נתיב ה-DLL לכלי. בברירת המחדל, regsvr32
יציג חלון קופץ המציין הצלחה (או כישלון). כדי לרשום קובץ DLL, יש לספק את שם או הנתיב המלא של ה-DLL כפי שמוצג למטה.
הרצת הפקודה למטה תיצור את מחלקות הרישום הנדרשות עבור שליטת OLE היעד במפתח HKEY_CLASSES_ROOT\CLSID למקרים של x64 או במפתח HKEY_CLASSES_ROOT\WOW6432Node\CLSID למקרים של x86.
בהצלחה, תראו תוצאת ממשק משתמש (GUI) שמציינת כי DllRegisterServer
הצליח.

בעת רישום שליטת OLE,
regsvr32.exe
יחפש בנתיב המערכת. לכן, אם תרצו לרשום קובץ מסוים מחוץ לנתיב הזה, הוא הכי טוב לציין את הנתיב המוחלט של הקובץ.
רישום שליטת OLE באופן שקט
כאשר אתם מריצים פקודות, לא תמיד רצוי להציג חלון קופץ. אז בואו נראה כיצד תדכאו כל חלון קופץ כאשר מרשמים שליטת OLE.
כדי לדכא את החלונות הקופצים, הריצו regsvr32
עם שם ה-DLL (msxml3.dll
) והמפסק /s
כדי לרשום את שליטת ה-OLE בשקט. החסרון היחיד של הפקודה הזו הוא שתדכאו גם הודעות שגיאה.
מפסק בלתי מתועד,
/e
, קיים, שמדכא רק את הודעת ההצלחה ב-GUI אך מראה את ההודעה על השגיאה ב-GUI—כל כך נבון!

רישום של בקרת OLE וציון פעולת התקנה
כאשר אתה מציין DLL לרישום OLE, אתה קורא רק לשיטה DllRegisterServer
, אך יש רקעות בהן יש צורך לבצע פעולות לאחר הרישום. כדי לעשות זאת, תוכל לציין את הפרמטר /i
.
לדוגמה, תוכל להעביר מחרוזת קלט (U
) לפרמטר /i
אשר יפעיל את השיטה DllInstall
ואת שיטת DllRegisterServer
באופן סימולטני.
שיטת
DllInstall
מאפשרת ליישומוןregsvr32.exe
להתקין DLL ביותר מדרך אחת ולקרוא לפעולות שונות ל-DLL אחד.

ציון פעולת התקנה בלעדי קריאה לשיטה DllRegisterServer
אולי תרצה רק להתקין בקרת OLE בלעדי רישום מחדש. אם כך, הפעל את הפקודה הבאה.
הפקודה משתמשת בפרמטר /n
כדי למנוע קריאה לשיטה DllRegisterServer
עבור ה-DLL shell32.dll לשיטת ההתקנה, DllInstall.

ביטול רישום של בקרת OLE עם regsvr32.exe
אם עברת דרך תהליך הרישום של בקרת OLE בלעדי שגיאות, אז זה הוא נחמד. אך יתכן שיהיה עת שתצטרך להסיר בקרת OLE כאשר יש קונפליקט עם בקרות אחרות. למרבה המזל, regsvr32.exe
מציע אפשרות לבטל רישום והסרה של בקרת OLE.
כדי להסיר ולהסיר רישום של בקר, הריץ את ה־regsvr32.exe
והעבר את הפרמטר /u
כדי להסיר את בקר ה־OLE. ניתן לראות בתוצאת ה־GUI שלמטה שה־DLL של msxml3.dll הוסר בהצלחה.
כדי להפעיל פעולה במקביל לביטול הרישום, העבר את מחרוזת הפעולה (
U
) לפרמטר/i
. אז פקודת ה־regsvr32
תקרא לפונקציית ה־DllInstall
עם הפעולה הזו כפיצול, דוגמת:regsvr32 /i:action /U msxml3.dll
.

טיפול בשגיאות עבור regsvr32.exe
חוויתה הצלחה ברישום של בקרי OLE, אך מה קורה אם פקודת הרישום נתקלת בשגיאה? ישנם מספר שגיאות שעשויות להופיע כאשר אתה מנסה לנהל בקרים. ההודעות האלו עשויות להיות קריפטיות לפעמים אך פורקות למטה כדי להסביר לך מה הסיבה להן.
FAIL_ARGS | ⦿ “Unrecognized flag” ⦿ “Extra argument on command line” ⦿ “This command is only valid when an OLE Custom Control project is open” ⦿ “No DLL name specified” |
Implies that a command-line argument was incorrect. |
FAIL_OLE | “OleInitialize failed” | Implies that there was an error in properly initializing the OLE subsystem. |
FAIL_LOAD | “LoadLibary(<dllname) failed>“ | This can be a host of reasons such as a dependent library missing, the DLL is inaccessible due to permissions, or the file is missing. |
FAIL_ENTRY | ⦿ ” was loaded, but the entry point was not found. does not appear to be an .DLL or .OCX file” ⦿ ” was loaded, but the entry point was not found. may not be exported or a corrupt version may be in memory. Consider using PView to detect and remove it.” ⦿ ” was loaded, but the entry point was not found. may not be exported, or a corrupt version may be in memory. Consider using WPS to detect and remove it.” |
Implies that the entry point in the DLL, or function name, is missing. |
FAIL_REG | “<DLLEntryPoint> in <DLLName> failed“ | Implies that despite all the prior steps completing the system still failed to fully register the DLL. |
הרחבת יכולות ה־regsvr32.exe
בעזרת PowerShell
כיוון ש־regsvr32.exe
מעדיף את הפלט של ה־GUI, אוטומציה עשויה להיות אתגר. כדי להתמודד עם האתגר הזה, ניתן לקפוץ את הכלי של ה־regsvr32.exe
בפונקציה של PowerShell. על ידי יצירת פונקציה של PowerShell, ניתן להריץ את ה־regsvr32.exe
בדיוק כמו פקודת cmdlet טבעית של PowerShell.
כדי לקבל דוגמה, בדוק את הפונקציה Invoke-RegSvr32 של PowerShell שמופיעה למטה. פונקציה זו קוראת לכלי regsvr32 ומשתמשת בפוולשל ללכוד את קוד היציאה ולעבד אותו בהתאם. ועם החיבור של אימות ארגומנטים מראש, תוכל אף למנוע שגיאות לגמרי!
כדי לנסות את הפונקציה למטה, פתח קונסול פוולשל חדש והעתק את הקוד אליו. לאחר מכן, תוכל לקרוא לפונקציה כפי שמוצג למטה.
למטה תמצא מספר דוגמאות כיצד להשתמש בפונקציה Invoke-RegSvr32
.

Invoke-RegSvr32
PowerShell Commandמסקנות
עכשיו, למדת כיצד לנווט בתהליכים של רישום והסרת רישום של DLL וטיפול בשגיאות. אף ש-regsrv32.exe
לא נעשה שימוש רב עם משימות היומיום, ישנם רקעים בהם יידרש לרשום או להסיר DLL.
כדי להרחיב עוד יותר, תוכל להשתמש בפוורשל כדי לכלול יותר בדיקות ומקרים קצה. תוכל אף ליצור פונקציה בפוורשל שתציג את השלטים הרשומים במיקום הרשומות של CLSID
!