Remotedesktopverbindung ohne Abmelden des lokalen Benutzers

January 2, 2014

Unter Windows 2000, XP, Vista und Windows 7 muss der aktuell angemeldete lokale Benutzer abgemeldet werden, wenn eine Benutzersession per Remotedesktopverbindung aufgebaut werden soll.

Dieses Limit besteht nicht unter Windows Server Versionen.

Es existiert ein Patch für die Datei termsrv.dll, welcher dieses Limit aufhebt:

Das Programm startet ohne Installation, ein Klick auf “Patch”, gefolgt von einem Neustart des Systems, reicht aus. Der Patch funktioniert bei mir (Windows 7) einwandfrei. Der Patcher legt eine Backup-Datei der originalen termsrv.dll Datei an.


Windows: CD/DVD brennen ohne Adminrechte

January 2, 2014

Unter den Windows Versionen ab 2000, XP, Vista, Windows 7 und vermutlich auch Windows 8 haben Benutzer ohne Adminrechte (Hauptbenutzer oder normale Benutzer) keine Berechtigung zum Brennen von Wechselmedien. Häufig wird im Internet empfohlen, Zusatzsoftware zu installieren, es geht aber auch mit Windows-Bordmitteln:

1. Gruppenrichtlinien-Editor mit Administratorrechten öffnen (Startmenü -> Alle Programme -> Verwaltung -> Lokale Sicherheitsrichtlinie)
2. Öffnen von “Lokale Richtlinien” -> Sicherheitsoptionen
3. Die Richtlinie “Geräte: Formatieren und Auswerfen von Wechselmedien zulassen” durch Doppelklick öffnen.
4. Die Einstellung “Administratoren und interaktive Benutzer” auswählen und auf OK klicken.

Auf Englisch heißt die Richtlinie “Devices: Allowed to Format and Eject removable Media”, die Englische Anleitung findet sich auf der MSDN Seite:

The Essential Windows Software List (Update 3)

January 2, 2011

This is a non-complete list about software not everyone might know about and which has proven to be essential for me. I will add more by editing this post whenever I feel like it. Developer tools will be handled in separate posts.

Latest list update: 2016-01-03


Category File Management and Backup:

Eraser: Secure file removal.
Eraser let’s you safely delete files, i.e. overwriting the file content and completely overwriting the file system entry. You can choose how securely the content should be deleted by configuring the number of times the data is overwritten. You can also erase the free disk space, whole partitions, the whole hard disk including the boot partition. Eraser integrates with the context menu.

Free Commander: File Browser (Explorer alternative).
Free Commander works as good as Total Commander for me and is free software. It is the tool of choice if you want to do complicated copy/move/rename operations.

Truecrypt. Data encryption software.
Truecrypt offers all kinds of options to encrypt your files. Create a file which contains a virtual drive, encrypt a whole partition, your USB strick, or your whole hard drive – no problem. Create hidden volumes or hidden OS for plausible deniability. Has all the options you might want from a file encryption/decryption tool and is platform-independent.

Duplicati. Backup software.
Duplicati is an open-source backup software which sports many advanced features, one of the more important being support of rsync (i.e. for incremental backups of large files, only chunks of the file that have changed are written to a backup). Backups of open files and backups to cloud storage as well as AES-256 encryption for backups are among the more noteworthy features.

TreeSize Free:
TreeSize is a tool that shows you which files or subfolders take up the most space in a folder. The free-ware version comes without Adware and is sufficient for most needs.


Category Image Software:

Irfanview: Image viewer and management.
Not only is Irfanview an easy-to-use, lightweight image viewer that supports almost any format available, but it also understands the EXIF data of your pictures and lets you batch-rename thousands of photos based on EXIF tag data (e.g. the time the picture was taken). Also, batch-resizing or creating a picture browsing website is possible with this program.

JPEGtime: Time Stamp Modifier for JPEG files.
Ever taken pictures with two cameras and their clock settings did not match? Now you’re trying to sort the pictures by their EXIF time stamp? This tool will help you align the timestamps of the pictures so they are in the right order again.

Panorama Studio 2: Panorama image software.
Very good (although expensive) panorama picture software. I only know the free “Special Edition”, which has limits on output picture size, but love it. The software is very good in automatically finding control points, has superb options on matching the image brightness etc. and very good controls (e.g. preview, cropping, and so on).

gimp: Picture editing software
While gimp is extremely powerful, I sometimes do not easily get to where I want to go with gimp, but it’s an extremely powerful picture editor which is open source.


Category Multimedia:

Exact Audio Copy: CD Ripping and encoding tool.
Full featured (freedb lookup, cover download, ID3v2 tag editing, normalizing…). This software can work like a normal CD ripper, or in exact mode, where it proofreads problematic sectors many times and autocorrects reading errors if possible.

FLV player: Play online video (youtube) files.
Use this in conjunction with a Firefox plugin to download online flash video files to view the downloaded files on your computer.

VideoLAN Client: Video playback solution.
VLC supports many different formats, is lightweight and full-featured.

MP3tag: Powerful software to edit ID3 tag data for MP3 files.
Very good cover search, bulk-tagging, very good metadata search with several sources, make this one of my favorite tools to get ID3 tags right.

My favorite tool to burn optical discs, like CDs, DVDs and Blu-Rays. Works with Windows 10 and is Freeware. Newest version seems to contain Adware, though.

Media Monkey: Music management software
There is a free version and a “gold” version. As I liked the software and felt the need for separate collections, I bought the “gold” version. The software has drawbacks, like the non-adjustable font size, but is for me a better iTunes alternative.


Category Network and Internet:

HTTrack: Website mirroring Program.
HTTrack gathers whole websites and downloads them. All options can be configured with a nice Windows GUI. The tool supports multiple download threads and modifies the links for local browsing.

Thunderbird: Extensible E-Mail client and Calender Software
While I sometimes even enjoy using Outlook at work a little bit, most of the times I am angry about it. I don’t have much to complain about Thunderbird. It is a great E-Mail client, extensible by plug-ins, and comes with a good calender (the former Lightning plug-in). While there are rumors that Mozilla is going to discontinue Thunderbird, I hope the open source community will continue to support this great e-mail client that really does not need to be improved any more as it’s already great, only the full search could be more customizable. There is a large Thunderbird community on the internet and most questions will already have been answered.


Category Office Software / Text Editing / Text Conversion:

FreePDF: PDF printer.
Installs a Windows Printer which creates PDF files. PDFCreator is another tool that works as good.

PDF Split and Merge
As the name says, easy-to-use tool to split, merge, mirror or rotate pages of different PDF files.

Notepad++: A very powerful editor with plug-ins
I use this editor always instead of notepad.exe. It’s freeware and incredibly good.

… and of course LibreOffice, the free software office solution.


Category Windows Tools:

Process Explorer Process Monitoring (like Task Manager).
Process Explorer tells you everything about the programs running on your system and tells you which program is accessing a file.

HWInfo: Read out information about your PC
Pairs the functionality of reading out information about your PC hardware components (like the “msinfo32” program which is part of Windows does) with detailed information about the current CPU/fan frequencies and temperatures. Comes in a 32-bit and 64-bit version. Does not need an installation. Very useful.


Category Smart Phone / Connectivity:

MyPhoneExplorer: Synchronisation with Android Smart Phones
If you are paranoid about Google knowing everything about you, you will love this tool. I never use my Google account for synchronizing my phone contacts and calender entries, just this Windows tool (plus the companion Android app). It synchronizes easily with Thunderbird and that’s all I want and need.


Eclipse: Fixing the “Program is not a Recognized Executable” Error

January 2, 2011

This has been taken from a FAQ at

When you compile & link a program, the Eclipse run feature will try to recognize the executable, using one of several parsers. If the wrong binary parser (or none at all) is selected for the project, Eclipse will show the above error in the “Run…” dialog when you select the executable file for your project. Follow those steps to add a binary parser:

In the Eclipse main menu

  • select “Project” -> “Properties”
  • navigate to “C/C++ Build” -> “Settings” -> (on the right) “Binary Parsers”

In the “Binary parser:” list, check the “PE Windows Parser” and click “OK” (lower right)

C++ Style Int or Float to String conversion

December 20, 2010

If you want to convert an int or float/double value into a string representation without using snprintf or itoa, here’s the C++ way:

#include <sstream>

template <typename T>
inline std::string to_string (const T& t)
std::stringstream ss;
ss << t;
return ss.str();

Of course you can also use the stringstream variable the same way as you would cout.
(found on the net)

SVN Merge done right

November 23, 2010

[to be fleshed out]

When merging by hand, the recommendation is to always specify the range of revisions you want to merge from your branch to the trunk. First, look up the revision in which the branch was created in the SVN log (select “stop on copy” to hide everything the revisions before the branch was created). Then, merge your branch to your trunk and create a comment like “merged branch revision x-y”. Because if you want to merge the branch changes to the trunk again at a later point in time, you must not merge the changes prior to revision y again.

Here’s how you merge a specific change from the trunk to your branch:

Select “SVN merge” on your branch and choose the repository URL of your trunk. Look up the revision which brought the change you want and select that revision. If you want to merge all changes in the trunk since the last merge, lookup your svn:mergeinfor property or check your merge comment for the revision number, and enter as range everything from the next revision until HEAD. Now do the merge. The merge happens in your working copy, so you have to commit the changes to your branch working copy after the merge.

Always commit the whole working copy (from the toplevel directory) after a merge. You will see in the commit log that the toplevel directory was modified. If you double click the toplevel folder you will see that the difference is that the SVN property svn:mergeinfo was created and it contains the revision number of your merge (e.g. svn:mergeinfo: Folder/trunk:388).

If TortoiseSVN finds this property in your working copy, it will not merge changes prior to that revision when you merge again, even if you do not specify a revision (which, by default, would mean “merge all changes”, even the ones already merged).
This is the theory. In practice, always do a “test merge” first.

It is important to remember that a SVN merge is based on diff, so it’s a from -> to semantic. If you want to merge changes from the trunk into your branch, it’s from “trunk” to “branch”. If you want to reintegrate the changes in your branch into the trunk, you actually want to get the trunk from the “current trunk” to the “branch”, so it’s a merge from “trunk” to “branch”. Remember to always merge the changes to the trunk into your branch before you reintegrate your branch. This splits up the merging into two distinct steps and you prevent chaos (hopefully). Here’s a nice how to about this:

Read up on merging here:

Why a PC with multiple adapters on the same network can cause trouble

October 29, 2010

I had my Windows XP laptop connected to my home “workgroup” network with wlan and ethernet network adapter at the the same time. Normally one would guess, just as this Microsoft KB article suggests, that this might not be benificial, but at least it does not do much harm either.

Well, guess again. The “double connection” caused my XP PC to not show up on the windows network any more and any connections between the windows XP and the windows 7 pc would fail.

Unix: Copy a list of files

October 1, 2010

In one project, we have a selection of files I want to update from another directory tree containing much more stuff. Here’s how I get the selection of files I want to copy:

find . -type f | egrep -v '/\.svn/|\.obj' > selection.txt

For copying only the files named in selection.txt, I use tar to build an archive from those files:

tar czvf files.tgz -T selection.txt

By extracting those files, you have a copy of only those files you wanted with relative directories created as well. (–from-file is synonymous to -T)

Invaluable SVN properties for source files

September 2, 2010

If you add a source file to your repository, think about adding those SVN properties:

svn:eol-style = native
svn:mime-type = text/plain
svn:keywords = Date Revision HeadURL Author

The first line checks a file for consistent line endings before it can be commited.
The last line enables the magic tags like $Date: $ (see previous post).

You can also make TortoiseSVN auto-add properties by setting it up in the [auto-props] section of your SVN config file (%APPDATA%/Subversion/config). Here are some useful lines:

*.cpp = svn:mime-type=text/plain;svn:eol-style=native
*.hpp = svn:mime-type=text/plain;svn:eol-style=native
*.h = svn:mime-type=text/plain;svn:eol-style=native
*.c = svn:mime-type=text/plain;svn:eol-style=native
*.dbc = svn:mime-type=text/plain;svn:eol-style=CRLF
*.doc = svn:needs-lock=true;svn:mime-type=application/msword

C Tricks: Defining a String Table (Array)

August 2, 2010

Sometimes you need a String Table – an array of predefined character arrays – in C. There is the simple way to do this, by defining a fixed string size and table size:

#define TABLESIZE 3
#define STRINGSIZE 16
char stringTable[TABLESIZE][STRINGSIZE] =
  { "Entry1", "Entry2", "Entry3" };

However, there is a far more elegant way:

char * stringTable[] =
 { "Entry1", "Entry2", "Entry3", "verylongEntryonlytotestifithasanyinfluenceonsizeof"};
printf("String table size: %d \n", sizeof(stringTable)/sizeof(char*) );

This will output “String table size: 4” just as you intended. You do not have to worry about adjusting your defines whenever you make changes to the string table. Also, you do not waste memory because every character array only takes up as much space as needed for the particular string.

p.s.: I hope this actually works in C, I only tested it with a C++ compiler.