The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘Development’ Category

using tf to list the workspaces for the current directory in Team Foundation System

Posted by jpluimers on 2014/05/28

Since Visual Studio is always in a 32-bit directory, I needed the SetProgramFilesX86 batch file from

Windows batch file to set ProgramFilesX86 directory for 32-bit program files on x86 and x64 systems.

Here is a small batch file to list workspaces by any user for the current directory (assuming that directory is mapped to a workspace):

call "%~dp0SetProgramFilesX86.bat"
:: assume Visual Studio 2005:
::"%ProgramFilesX86%\Microsoft Visual Studio 8\Common7\IDE\tf" workspaces /owner:* /computer:* 
:: assume Visual Studio 2010:
"%ProgramFilesX86%\Microsoft Visual Studio 10.0\Common7\IDE\tf" workspaces /owner:* /computer:*

It uses TF, and assumes default locations for various Visual Studio versions based on the internal version number.

A generic TF batch file that finds the TF is this one:

call "%~dp0SetProgramFilesX86.bat"
:: assume Visual Studio 2005:
::"%ProgramFilesX86%\Microsoft Visual Studio 8\Common7\IDE\tf" %*
:: assume Visual Studio 2010:
"%ProgramFilesX86%\Microsoft Visual Studio 10.0\Common7\IDE\tf" %*

–jeroen

Posted in Batch-Files, Development, Scripting, Software Development | 1 Comment »

Windows batch file to set ProgramFilesX86 directory for 32-bit program files on x86 and x64 systems (via: Stack Overflow)

Posted by jpluimers on 2014/05/27

Every once in a while you need to execute a binaryfrom a batch file that will always be available 32-bits.
Examples include development tools (that usually are x86 hosts talking or encapsulating managed environments, and x64 debuggers) or office versions for which certain plugins are not available in x64 versions.

That’s why I wrote the below batch file to fill the ProgramFilesX86 environment variable to point to the 32-bit Program Files directory on any system (x86, x64, or one that does not make a distinction).

Determining processor architecture

The batch file makes use of the flags mentioned in HOWTO: Detect Process Bitness – David Wang – Site Home – MSDN Blogs:

Notes:

  • There are 3 distinct cases and two outcomes
  • We default to x86 just in case we run on a system that has none of the flags defined (for instance on legacy systems).
Environment Variable \ Program Bitness 32bit Native 64bit Native WOW64
PROCESSOR_ARCHITECTURE x86 AMD64 x86
PROCESSOR_ARCHITEW6432 undefined undefined AMD64

Source of 32-bit program files

The place of the 32-bit program files directory is determined by the environment variables mentioned in WOW64 Implementation Details (Windows):

Process Environment variables
64-bit process PROCESSOR_ARCHITECTURE=AMD64 or PROCESSOR_ARCHITECTURE=IA64
ProgramFiles=%ProgramFiles%
ProgramW6432=%ProgramFiles%
CommonProgramFiles=%CommonProgramFiles%
CommonProgramW6432=%CommonProgramFiles%
32-bit process PROCESSOR_ARCHITECTURE=x86
PROCESSOR_ARCHITEW6432=%PROCESSOR_ARCHITECTURE%
ProgramFiles=%ProgramFiles(x86)%
ProgramW6432=%ProgramFiles%
CommonProgramFiles=%CommonProgramFiles(x86)%
CommonProgramW6432=%CommonProgramFiles%
Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP: The ProgramW6432 and CommonProgramW6432 environment variables were added starting with Windows 7 and Windows Server 2008 R2.

Boolean logic and case insensitive compare in batch files

Many things in batch files can be tricky including these two:

The batch file

Finally: the batch file: Read the rest of this entry »

Posted in Batch-Files, Development, Scripting, Software Development | 4 Comments »

.NET remnants of the past: Visual Studio .NET 2003 cannot start debugging as the assembly is missing

Posted by jpluimers on 2014/05/15

Boy, was this Visual Studio .NET 2003 stuff a long time ago.
Bumped into this one:


---------------------------
Microsoft Development Environment
---------------------------
Visual Studio cannot start debugging because the debug target 'C:\develop\VS-2003\VS-2003-BASE\Source\AppTest\bin\Debug\AppTest.exe' is missing. Please build the project and retry.
---------------------------
OK
---------------------------

Indeed, Visual Studio was right: it didn’t understand the Release build existed like Visual Studio 2005 and up does:

C:\develop\VS-2003\VS-2003-BASE\Source\AppTest\obj\Release\AppTest.exe

–jeroen

Posted in .NET, .NET 1.x, C#, C# 1.0, Development, Software Development, Visual Studio 2003, Visual Studio and tools | Leave a Comment »

.NET/C#: Ctrl+R+R toggles wrap in Visual Studio.NET 2003 (via: Stack Overflow)

Posted by jpluimers on 2014/05/14

A while ago, I had to do some emergency fixing in Visual Studio .NET 2003 as – despite it is unsupported – a client was still using it.

By habit, I tried to rename a variable using the Ctrl+R+R shortcut for Refactor Rename. It didn’t work, and I was not surprised: this refactoring was introduced in Visual Studio 2005.

A while later, I started to notice that WordWrap was turned on in the code editor.

It took me a few minutes and a quick search to find out the two are related:

Visual studio 2003: ctrl+R+R is the shortcut to toggle WordWrap in the code editor.

Thanks Micah for answering that!

–jeroen

via How can I toggle word wrap in Visual Studio.NET? – Stack Overflow.

Posted in .NET, .NET 1.x, C#, C# 1.0, Development, Software Development, Visual Studio 2003, Visual Studio and tools | Leave a Comment »

Using dsquery and dsget to get computer information from a domain

Posted by jpluimers on 2014/05/13

This article is a very brief example of how to use dsquery/dsget/find to get computer information from in the active direrctory of a domain.

The main aim for myself is to condense the information here, and have some links for background information.

If you have the right credentials then the below batch file works very well.

It uses these tools:

  • dsquery to query the active directory on your domain controller for the existence and Distinguished Name (or ID/path) of various objects (in this example dsquery computer to check if a computer exists in a domain)
  • dsget which can get you various detail information about an object (for instance dsget computer used in this example))
  • find to raise the correct errorlevel (and indicate if we indeed found a CN – or Common Name – from a distinguished name)

The ds* tools do not raise any errorlevel, so that’s what find is used for.

Further reading: Read the rest of this entry »

Posted in Batch-Files, Development, Power User, Scripting, Software Development, Windows, Windows 7, Windows 8, Windows Server 2000, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP | Leave a Comment »

TCP/IP 40th Anniversary

Posted by jpluimers on 2014/05/11

One day late, but still: happy TCP/IP 40th Anniversary.

Posted in Communications Development, Development, Internet protocol suite, Power User, TCP | Leave a Comment »

.NET uses banker’s rounding as default as it follows IEEE 754 (via: Stack Overflow)

Posted by jpluimers on 2014/05/08

It is almost 3 years that Ostemar wrote an interesting answer on Stack Overflow to the question

Why does .NET use banker’s rounding as default? – Stack Overflow.

Few people (even many programmers don’t!) know about rounding and how it can influence software, let alone what bankers rounding does so lets set a few things straight first.

Rounding matters. Depending on the kinds of software you write, it matters a little, or a lot.

For instance, in these categories, it can matter an awful lot:

  • Financial applications
  • Statistical applications

Bankers rounding means rounding half even. Which means that #.5 will round to the even number closest to #.

In bankers rounding, 1.5 rounds to 2, 3.5 to 4 as does 4.5, -1.5 rounds to -2, -3.5 to -4 as does -4.5.

This is called “unbiased” because for reasonable distributions of y values, the expected (average) value of the rounded numbers is the same as that of the original numbers.

This is contrary to what the majority of people are accustomed to: Round half away from zero is taught in most countries (even for the Dutch, despite the alias “Dutch Rounding” for round half to even).

Round half away from zero rounds 1.5 rounds to 2, 3.5 to 4 and 4.5 to 5. Negative numbers round like this: -1.5 rounds to -2, -3.5 to -4 as does -4.5 to -5.

This is only free of overall bias if the original numbers are positive or negative with equal probability.

In short, .NET uses bankers rounding because it follows the IEEE 754 rounding rules.

This was his answer: Read the rest of this entry »

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, .NET CF, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Development, Software Development | 3 Comments »

Fix by Christian S. – Moers for “KB2686509 repeatedly fails with Error code 0x8007F0F4” (via: Microsoft Community)

Posted by jpluimers on 2014/05/07

Thanks Christian S. – Moers for the fix for KB2686509 repeatedly failing and the answer below.

I’ve used it as the Microsof FixIt offered at You may receive a “0x8007F0F4” error code when you try to install updates from the Windows Update Web site or from the Microsoft Update Web site did not work on several systems. The fix by Christian did work on all those systems.

Note: it is possible you get the same error for KB2676562: MS12-034: Description of the security update for Windows kernel-mode drivers: May 8, 2012, as it is related to KB2686509: MS12-034: Description of the security update for CVE-2012-0181 in Windows XP and Windows Server 2003: May 8, 2012.

One of the symptoms is that your system contains the file %windor%\faultykeyboard.log containing a list of  missing keyboard layout DLL files or KBD files (one of my machines had these missing: kbdjpn.dll and kbdkor.dll).

The cause is that KB2686509 can have problems with registry keys stored here:

  • HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout
  • HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts

Christian wrote a batch file to fix it (named BatchFixKB2686509.cmd) which works splendid on the systems I had this error.

The batch file uses regedit /e to export parts of the registry, then writes a small .reg file to clear the keys and imports them with regedit /S, waits for you so you can install the update, then writes back the saved registry data.
So basically, it automatically performs the manual steps described at KB2686509 – Failure Due to Upgrade from Windows ME or 98 to Windows XP – TechNet Articles – United States (English) – TechNet Wiki.

His answer: Read the rest of this entry »

Posted in Batch-Files, Development, Keyboards and Keyboard Shortcuts, Power User, Scripting, Software Development, Windows, Windows XP | Leave a Comment »

ongoing by Tim Bray · Fat JSON

Posted by jpluimers on 2014/05/06

Plan C: JWalk. No, not jaywalk.

Trimming JSON results from Java: ongoing by Tim Bray · Fat JSON.

–jeroen

Posted in Development, Java, Java Platform, JavaScript/ECMAScript, JSON, Scripting, Software Development, Web Development | Leave a Comment »

Handy Chrome extension that surfaces NavTiming, render… (via: Ilya Grigorik – Google+)

Posted by jpluimers on 2014/05/06

Convenient: Ilya Grigorik – Google+ – Handy Chrome extension that surfaces NavTiming, render….

Posted in Chrome, Development, Google, Power User, Software Development, Web Development | Leave a Comment »