DCSIMG
January 2008 - Posts - Bah, Humbug!

Bah, Humbug!

Wear sunscreen...

שטויות

  • Join me

בלוגים שאני קורא

January 2008 - Posts

איך לבטל את הUAC עבור אפליקציה בודדת.

image כשאומרים חלונות ויסטה, הדבר השני שקופץ לראש מיד אחרי הממשק המצועצע זה הUAC (User Account Control). הUAC זו אותה תכונה (כולם יסכימו שמעצבנת, אם כי נחוצה..) שצועקת לנו בכל פעם שאנחנו מפעילים אפליקציה שהמילה Setup מופיעה בה, או בכל פעם שאנחנו מפעילים אפליקציה שמנסה לבצע פעילות שדורשת הרשאות גבוהות מברירת המחדל.
אין ספק שהUAC עוזר למנוע הרצה של קוד זדוני על המחשב - אבל באותו זמן, הוא גם מצליח להוציא משתמשים מנוסים מדעתם - המסך מחשיך ומופיעה תיבת הטקסט.. זה יכול לקרות כשברקע אתה בדיוק מקליד אימייל או צופה בסרט. במקרה הטוב זה קורה מיד, במקרה הפחות טוב - לוקח לתיבת הבחירה זמן להופיע ואנחנו מרעיפים עוד קללה על איזו ענקית תוכנה אלמונית.

איך הUAC עובד?

בגדול (מאוד) - כשמשתמש בעל פריווילגיות מתחבר למערכת, הוא מקבל שני Tokens. הראשון (וזה שמולו הוא עובד), Token עם הרשאות של User. הן מאפשרות לו גישה לכל מה שנמצא תחת c:\Users\HisName וגישה לHKCU בRegistry. הToken השני הוא עם מסיכת ההרשאות המלאה שלו. אם מדובר בAdministrator או בכל סט הרשאות אחר.
ברגע שהמשתמש מבקש לבצע פעולה כלשהי הוא צריך לקבל Token מתקדם יותר. במידה והמערכת מזהה שיש לו כזה, היא מציגה את תיבת הבחירה הידועה לשמצה. אחרת, היא מבקשת שמשתמש בעל הרשאות יתחבר (בדומה לפקודת הsu ביוניקס).

למה לא לבטל את הUAC לגמרי?

אפילו שועל קרבות ותיק כמוני (על מי אני מנסה לעבוד?), שהצליח להעביר 3 שנים עם הXP שלי בלי אנטי וירוס (מצד שני, אני לא משתמש בתוכנות שיתוף.. מה שבהחלט עזר) - מגיע לנקודה בחיים שבה הוא לוחץ Double Click על משהו שהוא לא באמת היה אמור ללחוץ. זה יכול להיות קוד זדוני - וזה יכול להיות סתם קובץ מערכת שבטעות לחצת עליו Shift + Delete. בנוסף, זה גם יכול להיות האח של אותו שועל קרבות ששאל את המחשב הנייד שלו, וגלש לאתרים מפוקפקים של רוכבי אופניים בשביל להוריד שומר מסך.. בכל מקרה - הUAC זו אחת התכונות החשובות בויסטה (אם לא החשובה שבהן), וגם אם היא לפעמים מציקה - חשוב לא לבטל אותה באופן מוחלט לכל המערכת.

אבל.. לא כל הנוצץ זהב

image יתרונות רבים לUAC - אך גם חסרונות. לעתים, ישנן אפליקציות שהמפתחים שלהן לא הקפידו מספיק - ובכל ריצה שלהן הן תבקשנה הרשאות Administrator (או לפחות, תפתחנה חלון בן הן ממליצות לך להריץ אותן כAdministrator).

במקרה כזה, יש לנו כמובן האפשרות לתת לאפליקציה הרשאות Administrator כברירת מחדל.. אך אבוי! בכל פעם שנריץ את אותה אפליקציה שהמפתחים שלה הזניחו את הBest Practices של מיקרוסופט הUAC יצעק עלינו שאנחנו מתכוונים להריץ את האפליקציה כAdministrators - ויבקש מאיתנו לאשר שאכן זו כוונתנו.

image

אז איך אפשר לעצור את הUAC רק עבור אפליקציה בודדת?

ראשית, נייצר פרופיל לאפליקציה. את הפרופיל הזה אח"כ נוכל למחזר בכל מכונה שהיא בארגון!

  1. ראשית, יש להתקין את הApplication Compatibility Toolkit מאתר מיקרוסופט.
  2. imageלאחר ההתקנה, יש להריץ את הCompatibility Administrator שהתווסף לתפריט הStart שלכם. כמובן שיש להריץ אותו עם הרשאות Administrator.
  3. בצד שמאל, תחת Custom Databases אמור להיות פריט ששמו New Database(1) Untitled. יש ללחוץ על הלחצן הימני בתפריט, ולבחור בCreate New ואח"כ Application Fix.
  4. יש imageלמלא את הפרטים הרלוונטיים של התוכנית אותה אתם רוצים לתקן. במקרה שלי, ויז'ואל סטודיו 2005.

    ואח"כ ללחוץ על Next. מסך הCompatibility Modes הוא מסך מאוד חשוב. באופן תמוה, ברירת המחדל היא ריצה במצב תאימות לחלונות 95. כאן יש לבחור None, אחרת האפליקציה במקרה הטוב תרוץ במצב מותאם ל95, ובמקרה הפחות טוב - פשוט לא תרוץ. אח"כ, לחיצה שוב על Next עד שמגיעים לCompatibility Fixes. ברשימה שתוצג, יש לסמן את RunAsInvoker ואח"כ - ללחוץ Next עד הסוף. כמובן שבתהליך הזה ניתן לייצר פרופיל מותאם אישית שלם לכל אפליקציה, אך בפוסט הזה אני אתמקד אך ורק בנושא ביטול הUAC.
  5. עכשיו נשאר רק לשמור לקובץ את הפרופיל החדש שיצרנו (לחיצה על Save תבקש ראשית להכניס שם לDB החדש, ורק אח"כ תאפשר לשמור את הקובץ), וזהו סוף השלב הראשון.

השלב השני יהיה להתקין את הפרופיל שיצרנו במכונה:

  1. נכנס לCommand Prompt (שכמובן נריץ כAdministrator).
  2. נריץ את הפקודה sdbinst PATH_TO_OUR_FILE ו... זהו :).

image

מעכשיו, כשתנסו להריץ את הVS2005, הUAC יתעלם ממנו.

חשוב: אם אתם מחליטים לבטל את הפעולה, פשוט חזרו על השלב השני, אך אחרי sdbinst הוסיפו את הפרמטר -u קרי:

image

קישור למאמר בנושא מהKB.

אתר חדש של מיקרוסופט שמרכז דוגמאות קוד מקור.

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

http://code.msdn.microsoft.com

פורסמה הטיוטא הראשונה לתקן HTML 5.0

האמת? מעט מפתיע. מעבר לרשימה מכובדת של תגים חדשים, ניתן לראות כמה חידושים מפתיעים או יותר מזה - כמה דברים שמפתיע שנשארו.

בעולם סמנטי (Web 3.0), מפתיע שW3C בחרו להנציח את התקן הלא XMLי, מה שמקשה על מנועי חיפוש ואתרים לנתח את תוכן האתר (מקשה זו מילה קצת גדולה.. הכוונה היא שלא ניתן לנצל את יכולות הDOM, ויש לפתח מנגנון ייעודי) מצד שני - ברשימת הנושאים הפתוחים כן מופיעה התייחסות להגדרות סמנטיות של של אלמנטים קיימים.

התמיכה לאחור היא כמעט מוחלטת. גם בגרסה הזאת ישנם אלמנטים שהוגדרו כObsolete, אבל זוהי הכוונה למפתחים ולא לדפדפנים. הדפדפן צריך להמשיך לתמוך גם ביכולות האלו בשלב הזה.

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

לסיכום, השינויים מבורכים ואכן סוגרים פינות שהיו קיימות מאז עידן HTML 2.0 ואפילו 1.0. אם גרסה 4.0 הייתה הגרסה הראשונה שבאמת התייחסה לצרכי הWeb, הרי שהגרסה הזאת מנסה לחזות את צרכי הWeb, ואני מברך על כך.

ניתן לעיין במסמך התקינה המלא שפורסם להתרשמות ראשונית. האם נוכל לראות ניצנים של התקן כבר בIE 8.0?

LOL?

אחת מהודעות השגיאה היותר הזויות:

Error: BuildAssembler: The type 'SandcastleBuilder.Components.ShowMissingComponent' was not found in the component assembly 'C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\SandcastleBuilder.Components.dll'.

הפתרון למי שמתעניין מופיע כאן.

שוחרר בטא לFeaturePack של VS C++ 2008

כולם דיברו עליו.. מיקרוסופט הבטיחה.. יש מי שציפו שהוא ייכלל בVS2008 RTM, אבל עדיף מאוחר מלעולם לא - מיקרוסופט שחררה את הבטא הראשון של חבילת הFeaturePack עבור C++.
החבילה הזאת כוללת את המימוש של TR1 (ר"ת של Technical Report), ועוד תוספות בתחום ממשק המשתמש.

פירוט על ההרחבות שמגדיר התקן TR1 ניתן לקרוא במסמך הזה. בנוסף, ממליץ בחום לקרוא את ההודעה בבלוג של סקוט מאיירס שמתייחסת לנושא.
התקן הזה אמור (לטענת מיקרוסופט) להיות מיושם בתוך הגרסה הבאה של C++ (מה שמכונה C++0x).

רשימת הפקדים החדשה מעניינת (תמיכה בRibbon ועוד פקדים שהיו נחלתם של מפתחי Managed או של מי שרכשו חבילות פקדים מתאימות. בעצם מיקרוסופט הפסיקו להזניח את מפתחי הNative), אבל מה שבאמת מרשים זה האימוץ של הTR1.

אני חושב שזהו העדכון הגדול ביותר בסביבה מאז VS 6.0 SP6.

 

להורדה:

http://www.microsoft.com/downloads/details.aspx?FamilyId=D466226B-8DAB-445F-A7B4-448B326C48E7&displaylang=en

 

מסכים כחולים, XHTML וגוגל שולחים לי פרסומות איראניות.

על XHTML

bendavid את סוף 2007 החלטתי לחגוג ביישור קו עם עולם הWeb שהשתנה מאוד ב6 השנים שחלפו מאז יצא לי לפתח עבורו. את האתר "המסחרי" הראשון שלי כתבתי בתחילת 1997, אחרי שיצא תקן HTML 3.2 (שהוצג ע"י W3C, ועם זאת היה לא תקני למעשה..) עבור פרופסור מהטכניון שפתח גלריה ליצירות שלו. בשנה הזו גם פרסמתי במגזין JavaScript שלא קיים היום כבר קטעי קוד (שעבדו רק על Netscape.. מי חלם בכלל על אקספלורר באותה תקופה??)

אתר האינטרנט הראשון שכתבתי אי פעם ושעלה לGeoCities (קרי.. היה פתוח לכל העולם ולא רק לחברים מהכיתה), היה לדעתי מתישהו בשנת 1995 והיה פלגיאט של האתר של Opel. לפני כן לא זכורים לי אתרים שעשיתי ועלו לאוויר אלא רק עמודים לוקאליים שכתבתי לשימוש אישי (בעיקר כBookmarks) בHTML 1.0 הידועה והטובה (על Netscape 0.9 שרץ על Windows 3.11 שמריץ Trumpet בשביל להתחבר לאינטרנט באמצעות מודם נטול חייגן במהירות 2400 סל"ש)

אם אני לא טועה, נטויז'ן היו הראשונים להציע את פלטפורמת הPHP שלהם (Personal Home Page) וזו הסיבה שעברתי אליהם בשלב כלשהו (אני אשמח אם אנשים שמתענגים על נוסטלגיה כמוני יגיבו לפוסט הזה אם הם זוכרים את הPHP של Netvision, או יודעים כיצד ניתן להשיג דברים שנעשו שם).

בכל מקרה, ניצלתי את החודש החולף להתעדכן קצת בעולם הWeb. אני לא מדבר על ASP.NET אותה למדתי ברבות השנים, אלא על התקינה בWeb בימים אלו, מגמות, מה צפוי וכו'. בתגובה, דאגתי שהאתר הפרטי שלי כמו גם אתרים אחרים שבבעלותי יתאימו לתקנים הנהוגים היום. בנוסף, נתתי לאתר שלי קצת מגע Ajaxי ממש בקטנה.. רק בשביל טופס יצירת הקשר שעלה לי בהמון Spam בד"כ.. (אגב, הCaptcha שהשתמשתי בו הוא אותו Captcha שמשתמשים בו כאן. גיא/מאיה/מיכל, אם אתם מחפשים פתרון לבעיה של המספר שלא מתאימים לכיתוב.. פתרתי את זה אצלי. רק תגידו..).

IRQL_NOT_LESS_OR_EQUAL

IRQL לאחרונה שדרגתי את הזכרון במחשב הנייד שלי מסלוט אחד של 2 ג'יגה לשניים כאלו. אני מריץ על המכונה שלי Windows Vista Ultimate x64 כבר שנה וכמה חודשים (מאז ששוחררה) בלי בעיות, דבר שמעטים מעריכים. האמת היא שאכלתי הרבה מאוד קש ברבות הימים, אבל עדכוים מזדמנים פתרו את מרבית הבעיות (מלבד דרייברים של Dell שעד היום טרם יצאו.. אפילו לא לXP 64).

בכל מקרה, הוספת הסלוט הנוסף התגלתה כטעות מרה. מהרגע שזה הצטרף, לא הצלחתי להשלים 5 דקות עבודה מול המחשב בלי מסך כחול. ניסיתי להתקין את הSP1 בגרסת הRC, אבל.. גם זה לא פתר את הבעיה. הסלוטים זהים. דאגתי לקנות בדיוק את אותו אחד שכבר היה לי במחשב. כשאני מפעיל את המחשב עם אחד מהם, הוא עובד בסדר גמור. לא משנה איזה מהשניים. כשאני מפעיל אותו עם שניהם הוא קורס. חשבתי בהתחלה שמדובר בבעיה בSLOT הפיזי במחשב.. אז ניסיתי להתקין שניים של ג'יגה אחד. שניהם עבדו. מחיפוש המחרוזת IRQL_NOT_LESS_OR_EQUAL בLive (!!!), מצאתי שהבעיה מופיעה במחשבים שיש להם יותר מ3GB זכרון. יתרה מזאת, מיקרוסופט שחררה עדכון לערכת ההתקנה של ויסטה שפותרת את הבעיה שנגרמה בעת התחלה של התקנה.

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

גוגל שולחים לי פרסומות בפרסית

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

 

IranianAdsByGoogle

 

וכמובן.. שנה אזרחית טובה ופוריה!