Abszolút egyszerű feladatot kaptam. Csináljak egy listát, a következÅ‘ oszlopokkal: felhasználói név, GUID. Az elsÅ‘ oszloppal nem volt semmi gond és úgy véltem, a másikkal sem lesz. Kétperces munka. Egy perc volt, amÃg megnéztem adsiedit-tel, hogyan is hÃvják a tulajdonságot: objectguid. A következÅ‘ perc pedig azzal telt, hogy az elÅ‘regyártott lekérdezÅ‘szkriptemben átÃrtam a lekérdezést a kÃvánt formára.
Majd az elkövetkező pár órában azzal foglalkoztam, hogy rájöjjek, miért is nem működik ez a módszer. A szkript ugyanis üres oszlopot hozott le.
Rutinosan kikapcsoltam a szofisztikált hibafigyelést (on error resume next), Ãgy meg is kaptam a várt runtime error-t.
Nézzük, ldp-bÅ‘l mit látok. Semmit. Nincs ilyen tulajdonság. Visszamentem az adsiedit-hez, hátha az elÅ‘bb káprázott a szemem, de nem - a tulajdonság ott volt, sÅ‘t, módosÃtani is tudtam. (Ezzel azért óvatosan.) Azaz jogosultsági probléma sem lehet.
Jöjjön a gugli power. Hosszas keresgélés után találtam olyan linkeket, miszerint felejtsem el, a feladat vbscript segÃtségével nem oldható meg. Ugyanis az objectguid az egy binárisokat tartalmazó tömb, a vbscipt viszont kizárólag a variant tÃpusú tömböket tudja kezelni.
Szerencsére a lendület továbbvitt és kipróbáltam még néhány keresÅ‘szót. És meg is lett az eredménye, rátaláltam egy Ãrásra Eric Lippert blogján.
A szokásos szöveggel indÃt. Hogy miért nem lehet megoldani a feladatot. Aztán megmutatja, milyen trükközéssel lehet mégis.
ElÅ‘ször bedobja a cstr() függvényt. Ez egy olyan függvény, amely képes kigondolkozni a dobozból. Mindent, még az általa értelmezhetetlen adatokat is átkonvertálja sztringgé. BÃzik benne, hogy a programoló csak tud kezdeni valamit a karakterkukaccal. És Eric tud. Nekiáll sztringet szeletelni, karaktereket konvertálni, nullából duplanullát csinálni - mÃg végül a boszorkánykonyhájából kipottyan a friss, ropogós GUID.
Egyszerű kiolvasás. Ja.



Tags:
Leave a Reply