Filed Under (C# code) by Christiaan van Bergen on August-14-2008

Zo af en toe ruim ik mijn harde schijf eens op. Verplaats wat bestanden in mappen met een wat meer toepasselijke naam, wis wat rommel, defragmenteer hier en daar wat. Je kent het wel. Wat gebeurt er echter wel eens, ben je net lekker bezig, kan je sommige bestanden niet verwijderen omdat ze gelocked zijn door een bepaald proces of erger nog, de bestandsnaam is van dien aard dat je het bestand niet kan verwijderen. Deze laatste noem ik voor het gemak maar ’stupid files’.

Wat blijkt nu, in Windows verkenner kan je bestanden niet verwijderen omdat ze karakters bevatten die niet mogen of de naam is simpelweg te lang. De manier om deze bestanden alsnog te verwijderen is gebruik te maken van de oude 8.3 notatie (je kent het wel NHJ_87~1.TXT bijvoorbeeld). Om een 8.3 notatie te zien, kan je het commando dir /x gebruiken. Vervolgens gebruik je het command del <file> om het bestand te verwijderen.

Wel jammer dat er vaak zoveel bestanden staan dat het een tijdrovende taak wordt om dit bestand voor bestand uit te voeren. Tja, dan maar een klein proggie schrijven die dit voor je doet.

Een kleine console application met daarin alle bestanden op te sommen moet al voldoende zijn, ware het niet dat .Net niet het 8.3 filename formaat ondersteunt. Hiervoor moet je een dllImport uitvoeren op de kernel32.dll.

[DllImport(“kernel32.dll”)]static extern int GetShortPathName(string longPath,   StringBuilder buffer, int bufferSize);     …     StringBuilder buffer = new StringBuilder(256);GetShortPathName(file, buffer, buffer.Capacity);string shortfilename = buffer.ToString();

Om direct aan de slag te gaan met het deleten van die stupid files, kan je hier de console app downloaden. De (eenvoudige) sourcecode van dit tooltje heb ik hier voor je beschikbaar.

Mocht je nou toch nog locked files tegenkomen, dan is dit tooltje misschien wat voor je. Unlocker geeft je een extra optie in je rechtermuis-menu om een bestand te ‘unlocken’. Wel handig.

Tool DeleteStupidFiles - link
Source DeleteStupidFiles - link
Unlocker - link

Epivir-HBV
Purchase Ophthacare
Lexapro
Purchase Sorbitrate
Order Prevacid
Cheap Xeloda
Purchase Coumadin
Cheap Evista
Purchase Trimox
Loxitane
Buy Karela
Order Zovirax
Purchase Zimulti
Cheap Cardizem
Plan B
Acomplia
Purchase Cymbalta
Aciphex
Order V-Gel
Buy Avandamet
Purchase Cipro
Cheap Naprosyn
Purchase Prinivil
Purchase Trandate
Purchase Lozol
Cheap Fosamax
Cheap Soma
Cheap Lasix
Cheap Famvir
Purchase Flexeril
Human Growth
Purchase Lisinopril
Order Zocor
Cheap Nolvadex
Order Lukol
Cheap Prinivil
Buy Capoten
Cheap Revia
Orgasm Enhancer
Buy Pletal
Kamagra
Cheap Proventil
Buy Fioricet
Buy Lincocin
Cheap Stromectol
Lotrisone
Buy Coreg
Buy Mexitil
Order Tricor
Cheap Premarin
Order Vicodin
Order Sarafem
Buy Herbolax
Cheap Mentax
Cheap Rhinocort
Cheap Butalbital
Purchase Ephedrine
Order Adderall
Buy Prograf
Order Zetia
Femcare
Cheap Ambien
Cheap Nimotop
Purchase Hytrin
Cheap CLA
Purchase Femara
Kytril
Purchase StretchNil
Cheap Proscar
Order Naprosyn
Adderall
Cheap Eurax
Purchase Buspar
Buy Dostinex
Buy Speman
Buy Omnicef
Cheap Zebeta
Diflucan
Purchase Paxil
Rumalaya
Starlix
Cheap Amaryl
Buy Oxycontin
Cheap Kytril
Buy Lisinopril
Order Lopid
Purchase Acyclovir
Purchase Femcare
Buy Xenacore
Buy Phentermine
Cheap Altace
Triphala
Buy Monoket
Buy Cymbalta
Buy Viagra
Purchase Risperdal
Buy Atacand
Purchase Rogaine
Purchase Aleve
Purchase Evista
Vasotec
Purchase Vytorin
Purchase Revia
Buy Aldactone
Order Diabecon
Buy Protonix
Purchase Exelon
Cheap Zyrtec
Buy Premarin
Buy Soma
Cheap Seroquel
Buy Effexor
Purchase Diovan
Order Imitrex
Purchase Oxytrol
Male Sexual
Buy Geriforte
Cheap Prilosec
Purchase Oxycontin
Adalat
Buy Nizoral
Purchase Celexa
Buy Vasotec
Purchase Rumalaya
Plavix
Buy Levlen
Hoodia Weght
Purchase Lariam
Cheap Xenacore
Purchase Triphala
Purchase Proscar
Order Pravachol
Cheap Himcolin
Cheap Combivent
Purchase Reosto
Neurontin
Purchase Prevacid
Purchase Zithromax
Avapro
Order Glucophage
Order Ephedrine
Purchase Clarinex
Cheap Lincocin
Order Nexium
Purchase Ventolin
Order Trazodone
Elimite
Order Combivent
Purchase Himcospaz
Geodon
Buy Zanaflex
Purim
Rimonabant
Cheap Synthroid
Buy Norvasc
Order Lotrisone
Order Aricept
Cheap Rogaine
Cheap Tenuate
Order Avandia
Order Isoptin
Cheap Deltasone
Purchase Altace
Buy Valium
Cheap Confido
Buy Ephedrine
Order Arimidex
Order Augmentin
Order Seroquel
Cheap Noroxin
Order Mexitil
Buy Loprox
Order Cephalexin
Buy Nimotop
Order Fioricet
Prograf
Serevent
Purchase Avandia
Purchase Diabecon
Ophthacare
Buy Bontril
Order Copegus
Buy Avandia
Order Himcolin
Buying Tenuate
Purchase Lorazepam
Buy Himcolin
Cheap Claritin
Norpace CR
Purchase Elavil
Cipro
Buy Proventil
Order Avandamet
Order Acticin
Prometrium
Buy Actos
Cardizem
Buy Vantin
Purchase Flovent
Buy Calan
Buy Clarinex
Cheap Purim
Lorazepam
Acne-n-Pimple Cream
Cheap Cardura
Order ZeritOrder Prilosec
Purchase Abana
Order Confido
Buy Zyprexa
Hydrocodone
Didronel
Buy Azulfidine
Buy Elavil
Order Overnight
Cheap Nizoral
Purchase Zantac
Order Gasex
Order Singulair
Purchase Prograf
Order Himcocid
Order Azulfidine
Order CLA
Cheap Lorazepam
Order Lynoral
Cheap Tenuates
Buy Snoroff
Order Cytotec
Cheap Mycelex-G
Arava
Purchase Acticin
Casodex
Order Bontril
Order Zantac
Ultram
Order Noroxin
Cheap Danazol
Purchase Amoxil
Buy Zebeta
Abana
Buy Lexapro
Buy Prandin
Purchase Seroquel
Purchase Renalka
Buy Acticin
Xeloda
Antabuse
Nimotop
Cheap Zantac
Buy Cardizem
Order Mevacor
Amaryl
Cheap Zyvox
Brite
Fioricet
V-Gel
Cheap Zyloprim
Buy Sinequan
Revia
Buy Celexa
Cheap Retin-A
Avandamet
Purchase Nolvadex
Cheap Desyrel
Combivent
Buy Darvocet
Purchase Differin
Purchase Fioricet
Purchase Penisole
Menopause Gum
Purchase Singulair
Cheap Lisinopril
Cheap Gasex
Flovent
Buy Myambutol
Buy Purim
Cheap Bonnisan
Buy Pravachol
Touch-Up Kit
Buy Rimonabant
Buy Quibron-T
Purchase Naprosyn
Cheap Maxaquin
Zetia
Buy Zocor
Augmentin
Purchase Propecia
Order Pletal
Buy Adderall
Order Ultram
Buy Procardia
Purchase Serevent
Serophene
Order Celexa
Order Kytril
Cheap Sarafem
Cheap Triphala
Buy Tricor
Cheap Rocaltrol
Buy Brahmi



Filed Under (C# code) by Christiaan van Bergen on July-3-2008

In een post van vorig jaar december, meldde ik dat ik een artikel op codeproject.com had geplaatst over een DataSet te vullen via bijvoorbeeld een CSV bestand. Mijn aandacht werd hier weer op gevestigd door een vraag van Matt Krei. Hij vroeg me wat specifieke zaken hoe hij bepaalde opmaak middels reguliere expressies kon filteren.

De mailwisseling tussen Matt en mij heb ik in een artikel gegoten dat je hier kunt vinden.



Filed Under (CRM) by Christiaan van Bergen on May-14-2008

Wanneer je ontwikkelt in CRM en met verschillende collegae niet een zelfde CRM server deelt, dan komt er vast en zeker een moment dat je de wijzigingen die je hebt gemaakt moet delen. Dit kan je doen door het exporteren van je ‘customizations’ op de ene server en dit xml-bestand in de andere server te importeren.

Zo’n import van customizations moest ik onlangs ook uitvoeren. Het lukte helaas niet. Was het bestand corrupt? Een duidelijke melding kreeg ik niet. Gelukkig bood de event viewer uitkomst door mij te voorzien van deze ‘warning’ van ASP.NET 2.0.50727.0:

Event code: 3004
Event message: Post size exceeded allowed limits.

Okay, het bestand dat ik wilde uploaden was bijna 10 Mb groot. De grootte van het bestand zou inderdaad best eens het probleem kunnen zijn. Op naar de web.config dan maar, normaal gesproken de plek waar je zoiets aanpast. En inderdaad.

Open de web.config van de CRM-server webapplicatie. Zoek op ‘httpRuntime‘. Wanneer je deze node gevonden hebt, zal je twee attributen aantreffen.

<httpRuntime executionTimeout=”300″ maxRequestLength=”8192″/>

De executionTimeout is deĀ  instelling voor het aantal seconden dat een willekeurige http handeling door de server mag duren gemeten in seconden. De maxRequestLength geeft de maximale grootte aan in kilobytes van een te uploaden bestand. Ik verander de maxRequestLength in 10240 en ik kan mijn customizations.xml bestand van 10 Mb moeten inlezen. Voila.

Houd er rekening mee, dat er zich in de web.config meerdere httpRuntime secties kunnen bevinden. Bekijk de verschillende gevallen en bepaal keer op keer of je ze wil aanpassen of niet.



Filed Under (Events) by Christiaan van Bergen on April-17-2008

Jimmy Nilsson Nou zeg, komt Domain Driven Design goeroe Jimmy Nilsson himself naar Nederland om voor de dotNed gebruikersgroep te spreken, ben ik niet in staat om aanwezig te zijn. Enorm jammer. Voor mij althans. Voor jullie die hem willen horen, zien en aanspreken je kan je nog aanmelden bij de dotNed gebruikersgroep.

Het is aankomende 24 april weer de vierde donderdag van de maand. Een reguliere sessie met een niet zo reguliere gast. De avond wordt gehost door Sogyo en is zoals altijd weer gratis toegankelijk.

Wanneer je je wat meer wil inlezen bekijk dan in ieder geval de website van Jimmy Nilsson. Meld je in ieder geval aan voor zijn presentatie!



Filed Under (Overig, Code algemeen, Cool) by Christiaan van Bergen on April-10-2008

Via de Microsoft Security Newsletter werd ik gewezen op de site HelloSecureWorld. Een apart vormgegeven site met allerlei zeer bruikbare informatie in de vorm van video-interviews, teksten en virtual labs. Alleen al vanwege de visuele opzet de moeite waard om eens te kijken.

Het doel van deze site: de ontwikkelgemeenschap bewust maken van mogelijkheden en noodzaak beveiliging al op codeniveau toe te passen.

hellosecureworldEen kleine greep uit de onderwerpen die op dit moment op de site staan:

- Hashing algorithms

- Asymetric/symetric encryption

- ASP.Net site security

- SQL-injection

- Cross site scripting

- Storing keys in containers

- Imperative Security checks

- Create a Generic/Windows Principle

- Nested master pages

 

Op de een of andere manier blijf ik een zwak houden voor dit soort ‘hackers’ of ‘matrix’ achtige sites.

 

Microsoft Security Newsletter - link
HelloSecureWorld site - link



Filed Under (Events) by Christiaan van Bergen on April-8-2008

Aankomende donderdag 10 april is het weer zover, een hands-on lab van de gebruikersgroep dotNed. Deze keer is het onderwerp DSL-Tools. Onder begeleiding van Dennis Vroegop zelf stoeien met DSL is een uitkomst voor allen die wel eens wat meer willen weten hierover.
Afgelopen 27 april heeft Dennis zijn presentatie gehouden over dit onderwerp. Nu dus de hands-on ervaring.

Deze hands-on lab zalĀ gehost worden door Info Support te Veenendaal. De inloop is vanaf 18:00 uur, de start is om 19:00 uur. Je kan je nog aanmelden voor de gratis deelname aan dit lab. Ga hiervoor naar de aanmeldpagina van dotNed.

Ik zie jullie graag donderdag.



Filed Under (Overig) by Christiaan van Bergen on March-19-2008

Vanmiddag vernam ik via het nieuws op de radio dat Hugo Claus vandaag op 78-jarige leeftijd is overleden. Velen kennen hem van zijn boeken (meest bekend is denk ik ‘ Het verdriet van België’, ook als mini-serie op tv geweest) of zijn kunstwerken. Tijdens mijn studie heb ik verschillende van zijn werken gelezen.

Later op de dag, ik kwam thuis en pakte de krant van vanochtend, las ik dat Arthur C. Clarke ons ook heeft verlaten. Hem kennen we in ieder geval van 2001: A Space Odyssey. Geschreven in 1958 en later in 1968 meesterlijk verfilmd door Stanley Kubrick.

Hugo Claus Sir Arthur C Clarke

Beiden hebben op mij toentertijd een enorme indruk gemaakt, al verwacht ik dat het merendeel van ons IT-ers zich met name HAL 9000 zal herinneren en niet Louis Seynaeve.

HAL 9000

Dit soort gebeurtenissen zetten mij aan om nogmaals het werk van deze twee te bekijken en eens verder te kijken dan hun meest gangbare werken. Geloof me, het is de kleine moeite waard.

Memento mori..

 

Een boekverslag van Het verdriet van België - link
Hugo Claus - link
Arthur C. Clarke - link
2001: A Space Odyssey - link
HAL 9000 project - link



Filed Under (C# code) by Christiaan van Bergen on March-6-2008

Wanneer je in Visual Studio 2008 een Web Reference aanmaakt en je maakt gebruik van het .Net Framework 2.0 voor je project, dan krijg je exact dezelfde wizard als in Visual Studio 2005. Heb je echter een project gestart dat gebruik maakt van het .Net Framework 3.x, dan is de wizard anders (het heet zelfs Service Reference). Wat wanneer je een project maakt met het 3.x framework maar je wilt toch een web reference maken op de 2.0 manier?

Simpel, voeg een Service Reference toe. In het scherm dat zich opent klik je onderin op de knop "Advanced…".

In het scherm dat opent kies je voor "Add Web Reference…".

Het scherm dat nu verschijnt moet je herkennen als zijnde de wizard die je ook in de eerdere versies van Visual Studio had. Het toevoegen van een Web Reference.

De code die nu gegenereerd wordt, is gebaseerd op .Net Framework 2.0. Maar wanneer je het project compileert, gaat het uiteraard wel tegen .Net Framework 3.x



Filed Under (Overig) by Christiaan van Bergen on February-26-2008

Regelmatig krijg ik email van mensen die een geweldige keuze hebben gemaakt in het type virusscanner. Ik weet namelijk precies welke virusscanner ze hebben omdat het onderaan hun email als signature is toegevoegd. Signatures die elke keer vermeerderen wanneer ze op een thread antwoorden.

Buiten het feit dat ik het niet mooi vind -want wat maakt dat nou uit- is het niet erg handig voor de malafide emailontvangers. Stel, ik ben een niet zo frisse jongen en ik zie dat iemand een virusscanner heeft van het type X met een update van datum drie-weken-terug. Het is dan voor mij makkelijk die persoon een bericht te sturen met een ‘grap’ die niet door zijn scanner wordt gezien. Wellicht wat ver gezocht, maar toch. Informatie die je niet wil prijsgeven denk ik.

De toegevoegde waarde voor mij als ontvanger is trouwens gering in de boodschap dat het bericht gescand is door scanner X. Wie zegt mij dat dit waar is. Ik vertrouw wel op mijn eigen scanner. Daar heb ik anderen niet voor nodig.

Goed, de boodschap is simpel. Zet die meldingen uit! Alsjeblieft. Laat mij een voorzet geven door je uit te leggen hoe je dit in AVG doet.

Dubbelklik op het AVG icoon in je tray. Het volgende scherm opent zich. Selecteer hier de E-mail Scanner en klik op properties.

In het volgende scherm klik je op ‘configure’.

AVG_2

In het scherm dat nu verschijnt zet je de twee vinkjes voor ‘Certify mail’ uit. Klik op Ok.

AVG_3

Klik weer op Ok, en sluit het AVG Control Center. Et voila. Je bent verlost van de meldingen.

Andere virusscanners hebben uiteraard andere wijzen om deze functionaliteit uit te bannen. Laat ons dit doen. Alsjeblieft.

 

AVG Free Anti-virus - link



Filed Under (Overig) by Christiaan van Bergen on February-25-2008

Een tijd terug was er een incident op de werkvloer met betrekking tot het gestolen zijn van laptops van verschillende medewerkers. Uiteraard zullen de laptops voor hun straatwaarde zijn gestolen en niet vanwege hun content, het risico voor data-misbruik is klein. Management was toch in rep en roer omdat er nu een potentieel gevaar was dat sourcecode op straat was beland. Dit was echter niet aan de orde daar de harde schijven versleuteld waren, zo werd gezegd. Maar is dit wel zo?

Windows Vista heeft een mooie schijfencryptie ingebouwd, BitLocker genaamd. Zelf gebruik ik op mijn WinXP machine True Crypt. Zo op het eerste gezicht stel je je data hiermee veilig -niet tegen verlies uiteraard. De methode die gehanteerd wordt is het on-the-fly en- en decrypten van data middels een sleutel. Deze sleutel bevindt zich in het RAM-geheugen en daar ligt nu net het gevoelige punt.

Enkele studenten van Princeton University tonen aan dat het relatief eenvoudig is de sleutel uit het RAM geheugen te trekken. In een kort filmpje zetten zij uiteen hoe ze dit doen. Ja, je hebt wel fysieke toegang tot de machine nodig. Laat dit nu net het geval zijn bij diefstal.

Ik weet nog niet of dit een impact gaat hebben hoe ik met mijn schijfencryptie zal omgaan. Het erover nadenken of ik het moet veranderen en hoe ik dat dan zal doen is in ieder geval wel in gang gezet. Wil ik dit eigenlijk wel? Is de data op mijn machine zo belangrijk voor anderen dat zij daarom mijn laptop zouden stelen. Waarschijnlijk zoals bij de rest van ons: de data is voor mij van belang. Laat ik zorgen dat ik goede backups maak. Misschine is SkyDrive van Windows Live een optie? Nee, niet voor het echte werk.

 

BitLocker - link
TrueCrypt - link
Lest We Rember: Cold Boot Attacks on Encryption Keys - link
SkyDrive - link