בדיקת ערכי Registry מקובץ Batch

19 בדצמבר 2007

תגיות: ,
אין תגובות

אתמול אחד הלקוחות התקשר ובפיו בעיה, "יש לי לוגין סקריפט אשר מריץ התקנות כאלה ואחרות על התחנות, הבעיה היא שאותו הלוגין סקריפט משמש את המשתמשים בכניסה לשרתי הטרמינל, ואני לא רוצה שההתקנות ייבצעו על השרתים… מה עושים?"

אני ישר זרקתי לו שיש registry key שאומר האם השרת הוא טרמינל או לא
(HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat) פשוט תעשה בדיקה לזה ואם זה שווה ל 0x1 אל תריץ את ההתקנות.
אבל צצו שתי בעיות, הלוגין סקריפט אצלו הוא עדיין batch file פשוט (למה?!?!) והבחור לא יודע איך בודקים ערך רג'סטרי מה batch, למען הסר ספק, גם אני לא היתי סגור על איך עושים את זה מ batch וניסיתי לשכנע אותו לעבור כבר למשהו נורמלי כמו vbscript, אבל הוא בשלו, התעקש להשאר עם ה batch file שלו ולהוסיף את הבדיקה שם.

"טוב", אמרתי תוך כדי חיפוש עצם מתאים לשחרור עצבים (למה לעזאזל יש עוד אנשים שעובדים עם batch files ?!), "אני אבדוק לך את העניין".
כשהתיישבתי לבסוף בלילה כדי לבדוק איך עושים את זה, נזכרתי שיש את reg query שיודע למצוא ולהציג ערכים ברג'סטרי, אבל עדיין, זה רק מדפיס את מה שמחפשים, לא בדיוק מה שאני צריך.

אחרי חיפוש באינטרנט נפלתי על כמה דוגמאות שאיכשהו עזרו לי במאבק.
ככה שלבסוף יצא לי הדבר הבא:

 @ECHO OFF
SET TS=""
FOR /F "tokens=3* delims= " %%A IN ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v TSAppCompat') DO SET TS=%%A
IF %TS%==0x1 GOTO:EOF

לסיכום, הקטע הנ"ל בודק האם השרת הוא Terminal Server ואם כן, יוצא מהסקריפט.
אז אם מישהו עדיין משתמש ב batch files (שוב פעם, למה??) וצריך, חופשי להשתמש תמורת מנחה קטנה (קרמבו יהיה ממש מתאים).

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *