Archive for April, 2007

SQL Server Profiler, Server processes trace data

Sunday, April 29th, 2007

Utolsó SQL 2005 vizsgára készülve találtam egy érdekeset a Profiler kapcsán, a trace beállításainál:

“Server processes trace data
Specify that the server running the trace should process the trace data. Using this option reduces the performance overhead incurred by tracing. If selected, no events are skipped even under stress conditions. If this check box is cleared, processing is performed by SQL Server Profiler, and there is a possibility that some events are not traced under stress conditions.”

Azaz nagyon durva terhelés esetén, ha nem akarunk elveszíteni egy eventöt se, ikszeljünk.

MS Entity Framework – hej, ráérünk arra még

Sunday, April 29th, 2007

Emlékszem, az egész O/R mapper ügylet még 2002 táján kezdődött. Titkos sugdolódzások voltak: az ms O/R mappert ír (ObjectSpaces), belerakja ingyen a .NET-be, annyi a third party mapper íróknak. Aztán párszor még beígérték a terméket, fw. 2.0, SQL 2005, Vista, most a fw. 3.5. De ez se jött be.

Frans Bouma szerint egyszerű üzleti érdekek miatt tolták el a shipet.

Majd 2008-ban találkozunk vele újra. :)

Ember tervez – Isten végez

Friday, April 27th, 2007

Kibaszott hülye humora van az életnek.
Tegnap este megvettük az autópálya matricát, hogy megyünk vidékre a családhoz a hosszú hétvégére. Bálint már nagyon készült rá, minden napra volt program. Ma este fodrász mindhármunknak. Holnap sajtfesztivál a szülőhelyemen. Vasárnap Állattenyésztési napok, kutyabemutatóval, mindennel Vásárhelyen. Hétfőn-kedden vursli, ugrálóvár, stb.
Nagyon vártuk mind már. Aztán délben, óvoda után Bálint jött haza anyukájával. Az egyik lejtős utcán meglendült a bicaja, és anyukája már nem tudta utolérni. Belezúgott egy 1.5m mély betonárokba. Szerencsére alig volt benne víz. Betti hívott telefonon, hogy ömlik a vár Bálint szájából, menjek eléjük kocsival. Még a házat se zártam be, úgy rohantam.
Addigra már csupa vér volt mindkettő. Bálint szája sérült meg, gyakorlatilag kilyukadt a szája széle, egy pici bőr tartotta csak össze a két oldalt a szája sarkánál.
Helyi orvos, érdi sztk lebaszással az ügymenet be nem tartása miatt, János Kórház sebészet. A kórházban átmentünk egy olyan épületen, ami azt hittem csak a filmekben van, a gettót bemutató filmekben. Szerencsére a sebészet teljesen kulturált hely volt, nemrég újíthatták fel.
Jó óra várakozás után megnézett minket a doktornéni, mondta varrni kell. Sajnos a varrásnál nem lehettünk ott, cipőt lerúgva vitték el, persze hatalmas bömbölés közepette. Tudom, hogy sterilitás, meg minden, de talán könnyebb lett volna viselni neki a szurikat és a varrást, ha ott lehetünk. De mindegy, ez nem az én szakterületem.
Mikor kifelé hozták, durcásan mondta a hordozó legénynek, hogy rakja le, van neki lába. :) Tökös gyerek, pedig még csak alig múlt 3 éves.
Hétvégi program lefújva, pihizünk itthon.

És még egy gondolat az oviról. Mondja az óvónő, hogy ahhoz képest milyen elvont gyerek, jól ismeri a növényeket. Állítom, több növény ismer, mint az óvónő (legalább 50 félét). Nálam biztos, mindig mondja nekem az utcán meg a kertészetben mi-micsoda. Miért elvont? Mert időnként bámul ki az ablakon, és nem reagál, ha szólnak hozzá. Ugyan mi a faszér bámul ki az a gyerek? Nem lehet, hogy az anyukáját lesi, mikor jön érte? Nem lehet, hogy két hét alatt még nem szokta meg annyira az ovit, hogy ne várja az anyukája felbukkanását? Elvont. Imádom, ahogy sokan címkéznek, 0 információ alapján. Főleg egy ilyen pici gyereket. Nem csak a programozó szakmában vannak pályatévesztők. Címke on.

Ja, és még egy gondolat a gödrös mókához. Három álmom volt, ami kb. erről szólt. Mivel egy bő hónapja írom őket, könnyű felidézni. Remélem, ezzel beteljesedett a végzet, és leszállunk a gödrös témákról.

“Bálinttal és másik két gyerekkel egy tó vagy folyó jegén csúszkáltuk. Aggódtam, hogy Bálit alatt beszakad a jég, nem is alaptalanul: beszakadt. Elmerült a vízben, fejjel lefelé, és elkezdett süllyedni le. Furcsa módon nem kapálózott, csak mint egy darab kő süllyedt lefelé. Én valamiért nem tudtam utána menni, mintha fogott volna a jég (nem voltam mellette, hanem pár méterrel arrébb).
Valamivel később folytatódott a történet: Bálint értelmi fogyatékos lett, habár ott mintha már lány lett volna. Én valamiért nem emlékeztem semmire, barátaim mesélték el mi történt. Azt hiszem teljesen szétesett a család, nem voltam már együtt Bettivel sem. Ahogy mesélték úgy éreztem, mintha kandi kamera lenne az egész, rá is kérdeztem nem valami eszelős szivatásról van-e szó? De mondták, hogy nem.

Bálint biciklivel ment át egy keskeny fahídon, és beleesett a vízbe. Ott is fejjel lefelé, és belefúródott az iszapba a feje. Ott én rángattam a vízből, de ennek nem emlékszem a végére.

Egy atomháborús álmomban meg egy patakba esett bele, de ott nem volt nagyobb gond.”

De persze ez semmiség ahhoz képest, hogy egy kedves barátomnak ma temették a 33 éves fiát…

Longhorn Server B3 letölthető

Thursday, April 26th, 2007

Nem csak csikósoknak, mindenkinek.
Itt az alap letöltő lap.
Az ostobák persze gombra kattinva indítják (tudom a letöltő programok ellen), de 2 gigát nem lehet lehúzni valamilyen letöltésvezérlő nélkül.

A nyers url ez:
wget -c http://download.microsoft.com/download/d/d/2/
dd2c8e3b-0263-4d2f-ace2-9c5f93a30dd9/wsl_6001.16510.070417
-1740_x86fre_server-KB3SFRE_EN_DVD.iso

Akinek 64 bites kell, halássza le magának, ez 32 bites.

Gellérthegy Architekt Úr.

Érdemes sietni, most még 100 k-val jön (a 800-ból). ;)

Beindult a csata

Thursday, April 26th, 2007

Adobe opensources Flex
Silverlight vs. Flash.

SSL FTP az IIS7-ben

Thursday, April 26th, 2007

Hú, de nagyon hiányzott ez már a hostereknek (is).
A Longhorn server B3-ban már benne lesz (ma, asszem), a Vistának még nem része.

Hírforrás.

Bug report confirmed 4 perc alatt

Thursday, April 26th, 2007

Ez durva. Az msnél hajnali 2-kor, 4 perc alatt megerősítették, hogy ez a bug létezik, és továbbpasszolják a fejlesztőknek. 4 perc alatt!
Ha Magyarországon így fog menni az e-közigazgatás, akkor mi is olyan gazdagok leszünk, mint az ms. Vagy nem? :)

Ezzel kapcsolatban egy rövid szösszenet. 3 helyre akartam pénzt küldeni, ezért kerestem őket emailben:
1. Fővárosi Közterületfelügyelet, 6000 Ft parkolási bírság
2. Érdkom, kukások, 2 évre elmarad kukadíj, kb. 20e.
3. Diósdi Önkormányzat, gépjármű súlyadó, kb. 15e Ft (két kocsi)

Mind a háromhoz akadályoztatva volt a befizetés, most nem részletezem az okokat, de írtam nekik, hogy úgy fizetnék, segítsenek. Egyik se válaszolt bazmeg, 3 hónap alatt! Ezeknek még akkor se kell a pénz, ha az arcukba tolják. Telefonon sikerült aztán megoldani őket.

Na, ez a különbség mi köztünk és az ms között. 500 parsec.

Még egyszer az érdekes kódról

Thursday, April 26th, 2007

Előzmény.

MViktor írta:
Szornyusegesen nez ki, de fordul, sot! mukodik. http://en.wikipedia.org/wiki/Duff’s_device

Igen, innen vettem én is. :)

Rétikánya:
Magamtól szörnyülködtem. Megnéztem a Wikin…
…s ilyenkor mindig rájövök mennyire nem is értek a programozáshoz. El kéne mennem favágónak.

Nem, nem. Ez hekk, nem normális programozás. Gondolj bele, ha minden nap ilyen kódot kellene megértened. Ez kb. olyan kód, mint amit mickkék csináltak az NavAndGo-s felvételi kampányukban. Amikor egy kódról nem látszik villámgyorsan mit csinál, akkor az vagy zseniális hekk, vagy egy kalap szar. Ez a kód azért érdekes, mert az ember nem is gondolja, hogy ez a szintaxis egyáltalán lefordul C-ben, pedig de. :) Ahogy a cikk is írja, lehet, hogy még hatékonyabb is, mint az eredeti ciklusos megoldás, de mai compilereken és procikon már ez se biztos. Ha az embernek határozott célja van egy hekkel, és bebizonyítja, hogy ezt a célt teljesíti, hekkeljen. Ha nem, írjon olvasható kódot. Szóval ne írd le magad, ez eszement kód. :)

SebDani:
Ebben az esetben szívesen rácsapnék a kezére annak aki azt a fordítót írta, amin ez lefordul.

Elvileg minden C kompatiblis szabvány fordítón fordul. :) Ilyen laza a nyelv szintaxisa. Elő kell vennem a Kernighan-Ritchie könyvet újra, de nem azért, hogy ilyenekkel szórakoztassam a kollégáimat. :)

CPP compiler crash

Thursday, April 26th, 2007

Beküldtem életem első bugreportját, aztán lehet, hogy orrba leszek vágva, mert már más is megírta. Kiderül.

Egy szimpla kis kódocskától szétszáll a compiler:

a.cpp
[source:c++]
#include

void main()
{
CString path;
for(int pos = 0; CStringW s = path.Tokenize(path, pos); s.Empty());
}

[/source]

cl a.cpp

fatal error C1001: An internal error has occurred in the compiler. (compiler file ‘F:\SP\vctools\compiler\utc\src\P2\ehexcept.c’, line 971)

Ha korlátozni kell, abban a magyarok benne vannak

Wednesday, April 25th, 2007

Hír itt.
Főleg, ha féltik a seggüket a hatalmon levők. Amazok is féltenék persze, ha most ők lennének hatalmon. Csak, hogy politikailag korrekt legyen a véleményem. :)

Érdekes kód

Wednesday, April 25th, 2007

Fordul ez a kód? Csinál valamit?

[source:c++]
int c = 8;
char b[] = ” “;
char alma[] = “almaalma”;
char* a = alma;

switch (c % 8)
{
case 0: do { *b = *a++;
case 7: *b = *a++;
case 6: *b = *a++;
case 5: *b = *a++;
case 4: *b = *a++;
case 3: *b = *a++;
case 2: *b = *a++;
case 1: *b = *a++;
} while ((c -= 8) > 0);
}
[/source]

Telnetet a Vistára!

Wednesday, April 25th, 2007

Hideg zuhanyként ért, amikor pár hónapja telnettel akartam megnézni, hogy elérhető-e a másik gépemen lakó SQL Server, de nem volt telnet a Vistán.
Alapban nem települ, de nyilván fel lehet rakni. Lásd képpel itt.

Ha már elő és utóítéletek…

Tuesday, April 24th, 2007

Arab vs. fehér.

http://www.schneier.com/blog/archives/2007/04/how_australian.html

Olyan kár, hogy a világ ebbe az irányba halad, és még azt se tudjuk, melyik oldal zülleszti jobban (érvényes az előző postomra is).

A miniszterelnök és a cigányok

Tuesday, April 24th, 2007

Gy blog.
Ez a téma mindig felhúz.

A gyerek otthon szedi fel az antiszemita dumát. Igen, otthon, hol máshol? Csak állandóan azt hallgatják el a t. érdekkörök, hogy igen sok apropót adnak rá a tisztelt cigányok is. Kirekesztettek, nem kapnak munkát, stb.
Biztos, bennem is lenne félsz, ha cigány jelentkezne a saját (nem létező) cégembe. Nem utasítanám el csuklóból, de alaposan elbeszélgetnék vele, és felvenném, ha alkalmasnak találnám a munkára. Nehezebb dolga volna, mert cigány? Nehezebb. Sokan azt mondják, ez előítélet. TótaW-nek volt erről egy jó bejegyzése, hogy ez nem elő, hanem utóítélet.
Az előző házunknál a szomszédban dolgoztak cigányok. Mondtam, félrerakom az előítéleteimet (mint mondtam vannak, nem tagadom), bejavíttatom és és kifestetem velük a ház lábazatát, illetve bebetonoztatok egy kidőlt kerítésoszlopot.
Csak szegény feleségem volt otthon, amikor jöttek. Először nagyon megijedt, azt hitte betörni jönnek. Biztos az ő szülei is ezt nevelték bele, ez már csak egy ilyen banda. Aberrációs fertőzés a magukat magyarnak valló emberek között. Ja, többek között azért voltak gyanúsak, mert öltönyben jöttek. Vakolni, festeni. :)
Rájött, miért is vannak ott. Odaadta a festéket. Mondta nekik, adjanak hozzá meszet, mert ez csak a festék, ez önmagában nem tapad. Ó, kezit csókolom, jó ez így, sokat csináltuk már. Rájuk hagyta. 2 hét múlva jött egy eső, az egész lement, minden tiszta zöld lett. Végül apósom újrafestette, rendesen.
Az oszlop zsaluzatát nem támasztották meg rendesen, így amellett, hogy 5 centire kiáll oldalra a támfalra vagy 10 tenyérnyi helyen a rücskös, ronda beton, még ferde is kb. 15 fokban az oszlop.

Ja, és amikor kérdőre vontam őket, hogy milyen munka ez, ó, itt járunk el mindig, kijavítjuk. Nem kell folytatnom, hogy kitaláljátok a végét.

Szoktak jönni a szaggal. Büdösek. Próbáljuk meg tapasztalati úton megnézni a kérdést. Általános iskola másodikban bírkóztam. Az egyik gyerek cigány volt. Tényleg büdös volt. Lehet, hogy a büdös nem jó szó, egyszerűen más szaga volt, mint a többi gyereknek. Lehet, hogy nekik a fehér ember büdös, mert ők a sajátjukhoz vannak szokva. Egy ismerősöm, akinek már sok-sok hölggyel volt dolga az életében azt mondta, hogy egyszer volt egy félvér barátnője (nem cigány-magyar, hanem néger-magyar). Azt mondta nagyon tiszta lány volt, de a puncija már közvetlenül tusolás után is olyan erős szagú volt (másképpen fogalmazva büdös), hogy nem volt kedve ott puszilgatni.

Szóval ez csak megegyezés kérdése, hogy mit tekintünk büdösnek, és mit nem. Ha csak ez lenne a probléma forrása, akkor nem lenne probléma.

A probléma ott van, hogy nekik teljesen más az életmódjuk, és ez ütközik a miénkkel. Apósoméknál tépkedték le a házuk előtt a meggyfa ágait. Nem ám csak a gyümölcsöt lopták le, de még rongálták is a fát. Apósom rájuk szólt, hogy elég legyen már, az az ő fája, egyébként is permetezett (mintha ez érdekelné persze őket).

Kapott egy dörgedelmest, amelynek a lényege az volt, hogy az nem az ő területe, ez az utcán van, közös.

Nem lenne ezzel semmi gond, ha minden ember így érezné, akkor ez lenne a természetes. Én is vinném a tiédet, te is az enyémet. Abból viszont gondok vannak, ha mondjuk 80% hisz a magántulajdonban, 20 meg nem, legyen az cigány vagy sem.

És most lehet hörögni, de ők akárki-akármit hazudik más világképre vannak nevelve. Nem genetikai hulladékok. Az én kisfiam is bűnözővé válna, ha olyan szülei lennének. És egy cigány gyerek is a társadalomba beilleszkedő ember lenne, ha tisztességre nevelnék. A tisztesség is relatív, tudom, az is más most, mint mondjuk 100 éve. Azt értem tisztesség alatt, amit a többség annak érez, jobb definícióm nincs.

És a végén a kettőségről, ami miatt elbeszélnek egymás mellett az emberek a témáról.

Az egyik azt mondja:
1. A cigányok ki vannak rekesztve a munkából, a csúnya, diszkrimináló magyarok miatt, ezért
2. kínjukban lopnak és erőszakosak (az elsőt még megérteném, de a másodikat akkor se).

A másik ember (pl. én azt mondja):
1. Nem tudom miért, de lopnak és erőszakosak (mindig tisztelet a kivételnek, nem veszem bele a tisztességes nem tudom hány százalékot)
2. Emiatt az emberek félnek tőlük, és valóban nem szívesen adnak nekik állást, stb.

Melyik volt előbb, a tyúk, vagy a tojás? Ezt én nem tudom megválaszolni.

Supervising Controller pattern

Tuesday, April 24th, 2007

Architektúra kedvelőknek egy jó kis cikk a Supervising Controller pattern használatáról ASP.NET-ben.

Default ACLs on Windows Event Logs

Tuesday, April 24th, 2007

A devportálon kérdeztek egyet, és ennek kapcsán találtam meg ezt a bejegyzést, ahol leírják, melyik event log ág milyen ACL-ekkel rendelkezik alapban, még hasznos lehet.

Vista zárolt admin account

Monday, April 23rd, 2007

Ha valakinek annyi esze van, hogy kiveszi magát az admin csoportból, majd elfelejti az administrator account jelszavát, és azzal kilockolja az egyetlen admin accountot (illetve már eleve is ki van, by default), akkor melege lesz. :)

Szerencsére safe módban a lockolt admin ellenére is be lehet lépni.

Vegaság

Monday, April 23rd, 2007

Sokan nem értik, hogy egy ekkora darab fasz(i) mint én miért lesz vega? A legtöbb ember fejében a vegaság soványsággal jár együtt, lsd. a pókember c. film főszereplője. Én vagyok a cáfolat, de nem is török pókemberi babérokra. :)
Nálam a vegaságnak két fő motivációs tényezője van:
1. Ne dögöljenek meg miattam az állatok. Humanitárius, vagy ha úgy tetszik animatárius vagyok.
2. Nagyon sok rémálom volt, amelyek megszűntek, miután elkezdtem húst nem enni.

Az egész csak azért jutott eszembe, mert tegnap kényszerűségből húst ettem, aztán álmomban szét is szakítottak a két kezemnél fogva, fel is ébresztettem a feleségement az ordításommal.

A magyarázat megint kettős:
a. Azért álomodok rosszat, mert húst ettem, és bűntudatom van (nem érzem ezt, ennyire nem vagyok hülye, hogy az a malac megmenekült volna, ha nem eszek belőle).
b. Megérzek valamit az állat szenvedéséből spirituális úton.

Mindenki ossza be, hogy szerinte melyik az ok. Amire azonban felhívom a figyelmet, az az események sorrendje: előbb voltak az álmok, aztán a megvonás, majd a nyugalom. Persze, kezdődhetett a bűntudat korábban is. :)

Vista IE7 + Runas már nem jó barátok

Monday, April 23rd, 2007

Tesztelni szerettem volna valamit IE7 alatt, de úgy, hogy más user nevében indítom el. Nem indul el, a hibaüzenet arról szól, hogy ő bizony nem hajlandó más nevében futni, csak az interaktív felhasználó nevében (aki CTRL-ALT-DEL-lel belépett).

Internet Explorer
—————————
The RUNAS command is not supported.

Megnéztem, a kódjában explicit megnézik ezt a helyzetet, és kiszállnak, ha fennáll.

A téma szakértőjének blogjából:

“On Windows Vista, that command line won’t help you either [RunAs]. Internet Explorer on Windows Vista specifically checks to see whether it is being executed as a different user, and refuses to run if that is the case. (The reason is because IE communicates with a broker process — ieuser.exe — that runs as the interactive user.)”

Marad a Fast User Switching, ami nem is annyira fast…

Natív kód debugolási útmutató 10 percben

Saturday, April 21st, 2007

Szeretnék némi segítséget adni azoknak, akik nem általuk írt natív kódot szeretnének debugolni. A példában az Internet Explorert debugolom meg.
A natív kódú debugolás reménytelen szimbólumok nélkül, amelyek pdb fájlokban laknak. Az MS minden moduljához publikál pdb fájlokat, amelyek persze forráskód információt nem tartalmaznak, de a függvények és osztályok neveit igen. Ezek a stripped pdb fájlok.
Egy dll-hez, exe-hez a hozzá pontosan passzoló pdb fájlra van szükség. Kézzel igen nehéz lenne minden fájlhoz összevadászni a szimbólumokat, főleg, hogy hetente jönnek a hotfixek a gépre. Ezen segít a symbol szerver. Ez azt jelenti, hogy az ms minden modulhoz kirakja nyilvánosan egy webszerverre a szimbólumokat, amit a WinDbg vagy a VS magától le tud tölteni.
A szimbólumszervert be lehet állítani az _NT_SYMBOL_PATH környezeti változóban, vagy a VS-ben a Tool/Options/Debugging/Symbols alatt.
Visual Studio 2005 Debug Symbol beállítások
Nálam így néz ki a könyezeti változó:
_NT_SYMBOL_PATH=SRV*D:\Debugging\symbols*http://msdl.microsoft.com/download/symbols
D:\Debugging\symbols, ide tölti le a debugger a symbol fájlokat, így az első debugolás lassabban indul el, de utána már ebből a cache-ből veszi a pdbket.
Nálam ez a könyvtár 600 mega, ebben az XP és a Vista szimbólumainak egy része lakik.
Jöhet a debugolás. Az igazi macsó debugolás WinDbg vagy NTSD alatt lehetséges, én egyelőre a VS-re mutatom be, de már tanulgatom a WinDbg-ot is.
Létrehozok a VS-ben egy új, üres solutiont, így a töréspontok megmaradnak a debugolások között.
Debug/Attach-csal hozzákapcsolódok a már futó processzhez, esetünkben az IExpolere.exe-hez. Mivel fut a debugolandó program, így sokat nem tudunk vele tenni, állítsuk meg: break gomb a toolbaron, vagy F12.
A Modules ablakban látszanak a betöltött modulok és a hozzájuk tartozó szimbólum infó.
VS 2005 Modules ablak
A következő lépés töréspontok beállítása. Mivel nincs forráskódunk, ez kicsit macerásabb, mint saját kódoknál, de nagyobb az öröm is, ha sikerül összehozni. :)
Pl., a diagnosztizálandó probléma miatt engem érdekel, ha a registryből akar egy értéket olvasni az IE. Ezt valszeg a RegGetValue hívásával teszi meg. Rakjunk erre egy töréspontot!
A doksiból látjuk, hogy a RegGetValue 7 paraméteres. Ez azért fontos, mert az exportált nevek kicsit meg vannak gyúrva, így csak a függvény nevével nem lehet töréspontot berakni. A mangled név így néz ki általában az api függvényeknél (x86): _Fv@a paraméterek összmérete. Így a RegGetValue neve: _RegGetValueW@28 (7×4). A befagyaszott kódban a Breakpoints ablakban, New Breakpoint-tal már be is rakhatjuk a töréspontot:
VS 2005 Breakpoints ablak, benne 3 törésponttal
Ha tele, piros kört látunk, örülünk, ha nem, újragondoljuk a nevet.
Ezután a kódot elindítva előbb-utóbb becsap a kívánt töréspont:
Becsapott a töréspont :)
A képen sokkal több látszik, mint egyszerűen a töréspont. A bal oldalra dokkolt Memory 1 fenti kombójába beírtam, hogy ESP, így ráált a veremmutató címére, azaz az ablak tetején a fv. hívás lokális paraméterei láthatók. A legfelső érték a visszatérési cím, a másik az első paraméter, stb. Kijelöltem a 76daa4b8 paramétert, ami a RegGetValue LPCTSTR lpValue paramétere, azaz egy string mutató, esetünkben Unicode, mert Vistán vagyunk. Rádobtam a Watch ablakra, és átkasztoltam wchar_t*-gá, így azonnal látható lett az értéke. Hasonló módon a Memory 2 kombójába is beledobtam az értéket, így ott is látható a string.
Bajban vagyunk a töréspont szintaxisával, ha Template-et használó osztályokban kell töréspontot beállítani. Ilyenkor a fenti kukacos, számolós eljárás nem jön be, nincs mese, bele kell kukkantani a pdb-be.
A DIA sdk-ban (a VS setup része, ha kérjük) vagy egy kis példa, DIA2DUMP a neve. Ezt lefordítva egy pdb dumpoló eszközt kapunk a kezünkbe.
Engem az urlmon.dll belseje érdekelt. A Modules ablakból tudom, melyik konkrét pdb tartalmaz hozzá infót. Ezután egyszerűen a pdb könyvtárából:
dia2dump urlmon.pdb >dump.txt
A dump 9 mega. Az elejéből megtudhatjuk hol voltak az obj fájlok a MS build gépén, amin a Vista RTM készült:

0001 f:\vistartm.obj.x86fre\shell\lib\cul\objfre\i386\precomp.obj
0002 f:\vistartm.obj.x86fre\inetcore\lib\stock\stock\objfre\i386\stock.obj
0003 f:\vistartm.obj.x86fre\inetcore\urlmon\mon\daytona\objfre\i386\mon.obj
0004 f:\vistartm.obj.x86fre\inetcore\urlmon\trans\daytona\..\..\mon\daytona\objfre\i386\trans.obj
0005 f:\vistartm.obj.x86fre\inetcore\urlmon\iapp\daytona\..\..\mon\daytona\objfre\i386\iapp.obj
0006 f:\vistartm.obj.x86fre\inetcore\urlmon\download\daytona\objfre\i386\cdlpch.obj
0007 f:\vistartm.obj.x86fre\inetcore\urlmon\zones\daytona\objfre\i386\zonepch.obj

018D f:\vistartm.obj.x86fre\inetcore\inetcommon\commonparse\objfre\i386\add2strw.obj

Majd jönnek a szimbólumok:
PublicSymbol: [000a7201][000a7201][0001:000a274d] _OutputBlock@4(_OutputBlock@4)

Én a Call Stack ablakból láttam, hogy a Cwvt::InvokeWinVerifyTrust metódus működése érdekel. Rákeresve a dumpban a InvokeWinVerifyTrust-ra ez a szimbólum jön fel:
?InvokeWinVerifyTrust@Cwvt@@AAEJPAXPAUHWND__@@KPAPAU_JAVA_TRUST@
@PBGPAUIInternetHostSecurityManager@@3PADHPAVCDownload@@@Z
(private: long __thiscall Cwvt::InvokeWinVerifyTrust(void *,
struct HWND__ *,unsigned long,struct _JAVA_TRUST * *,
unsigned short const *,struct IInternetHostSecurityManager *,
unsigned short const *,char *,int,class CDownload *))

Durva? Nagyon. Ez egy szimbólum, egy sor, csak betördeltem. Sajnos a template-ek miatt a compiler nagyon ronda cuccot rak össze, de normális emberek nem is nézegetnek ilyesmit. :)
Ám akármilyen hosszú is, a Breakpoints ablakba bepasztázva rátalál a VS és töréspontra, és meg is áll ott.
Szeretném hangsúlyozni, hogy ehhez a debugoláshoz NEM használtam a forráskód elérésemet, tisztán a mindenki számára elérhető publikus szimbólumokkal dolgoztam. Más kérdés, hogy a hiba felderítéséhez nagyban segít, hogy közben egy másik gépen és monitoron olvasom a forrást. :)
Ha sikerült valamit kinyomoznom a nagy debugolással, elmesélem. Ha nem, megtanultam jobban debugolni, és ti is kaptatok ízelítőt belőle.
Ja, és a témában az alapmű: Debugging Applications for Microsoft .NET and Microsoft Windows. Az új rész már csak manazsolt kóddal foglalkozik, erre figyeljetek.
Update: lett eredménye a 3 napos debugozásnak: az ActiveX Installer Service-szel fel se veszi a kapcsolatot az IE, ha az IE egy LUA account nevében fut. LUA: admin, de nem admin, azaz be van kapcsolva az UAC és az illető user tagja az admin csoportnak. Én ilyen voltam, és azt hittem, hogy emiatt minden program úgy kezel engem, mintha mégse volnék admin. Nos, az IE kódjában van egy elágazás, ami ez alapján másképp végzi az ActiveX telepítést. Így jártam, Zokszigen röhög, hogy még 2007-ben se vagyok igazi nonadmin, csak LUA luzer. Azt hiszem ez meggyőzőtt, hogy valódi nonadminként kell fejlesztenem. Vagy elég csak így tesztelni? ;)