So you have a WTL project but it’s not a COM server you’re writing?

Well, not exactly surprising if you write a GUI application like my NT Objects.

Turns out that ATL forces you to have support for COM server registration, as soon as you use anything derived from CComModule. Doh. And yeah, that includes all that pesky registry script syntax and what not …

But with a method I pioneered for NT Objects, you can save some precious KiB in your output file simply by faking/mocking CComModule. Sure, it’s not much you save, but given it’s dead code otherwise, why not shave it off?

The summary is that at the point you include your first ATL header (even if it’s not atlbase.h) you make sure that atlbase.h gets included at least once with _ATL_NO_COMMODULE defined before including it. Header guards will ensure that it won’t get included again. And then after including atlbase.h you include my very own fake_commodule.hpp like this:

#define _ATL_NO_COMMODULE
#include <atlbase.h>
#include "fake_commodule.hpp"
#undef _ATL_NO_COMMODULE

Once done, you remove the definition of _ATL_NO_COMMODULE again for subsequently included ATL (and WTL) headers.

Obviously this only ever makes sense if you don’t need to register a COM server. So use your common sense, you’ll know your application best.

// Oliver

PS: in case the link to fake_commodule.hpp rots away:

///////////////////////////////////////////////////////////////////////////////
///
/// Allows to reduce the size of executables linking the WTL by providing our
/// own minimal implementation of the CComModule, without the COM server
/// registration capabilities.
///
/// Include as follows:
///   #define _ATL_NO_COMMODULE
///   #include <atlbase.h>
///   #include "fake_commodule.hpp"
///   #undef _ATL_NO_COMMODULE
///
/// Dual-licensed under MS-PL and MIT license (see below).
///
///////////////////////////////////////////////////////////////////////////////
///
/// Copyright (c) 2016 Oliver Schneider (assarbad.net)
///
/// Permission is hereby granted, free of charge, to any person obtaining a
/// copy of this software and associated documentation files (the "Software"),
/// to deal in the Software without restriction, including without limitation
/// the rights to use, copy, modify, merge, publish, distribute, sublicense,
/// and/or sell copies of the Software, and to permit persons to whom the
/// Software is furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in
/// all copies or substantial portions of the Software.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
/// DEALINGS IN THE SOFTWARE.
///
///////////////////////////////////////////////////////////////////////////////

#ifndef __FAKE_COMMODULE_HPP_VER__
#define __FAKE_COMMODULE_HPP_VER__ 2016032300
#if (defined(_MSC_VER) && (_MSC_VER >= 1020)) || defined(__MCPP)
#pragma once
#endif // Check for "#pragma once" support

namespace ATL
{
    class CComModule;
    __declspec(selectany) CComModule* _pModule = NULL;
    class CComModule : public CAtlModuleT<CComModule>
    {
    public:
        CComModule()
        {
            // Should have only one instance of a class
            // derived from CComModule in a project.
            ATLASSERT(_pModule == NULL);
            _pModule = this;
        }

        HINSTANCE SetResourceInstance(HINSTANCE h) throw() { return _AtlBaseModule.SetResourceInstance(h); }
        HINSTANCE GetModuleInstance() throw() { return _AtlBaseModule.m_hInst; }
        HINSTANCE GetResourceInstance() throw() { return _AtlBaseModule.m_hInstResource; }
        HRESULT Init(_ATL_OBJMAP_ENTRY*, HINSTANCE, const GUID*) throw() { return S_OK; }
    };
}

#endif // __FAKE_COMMODULE_HPP_VER__
Posted in C/C++, EN, Programming | Tagged , , , , , | Leave a comment

Delay-loading ntdll.lib and others …

In one of my pet projects, NT Objects – or ntobjx in short – I am making use of the delay loading mechanism offered by the Visual C++ toolchain, while at the same time using it on a DLL that the linker will refuse to delay-load.

And for a reason, after all ntdll.dll is loaded into every or nearly every usermode process on Windows.

However, I didn’t quite like how the loader gets to show some error message and my program doesn’t get to do error handling at all. So I worked around the limitation.

In order to do that, I created a file which contains empty stubs for the functions I want to import. This is necessary, because unlike with 64-bit (x64) we can not create a working import library from just a module definition file when targeting 32-bit (x86), due to name mangling. Oh well.

So the recipe for x64 is simple:

lib.exe /nologo /nodefaultlib "/def:ntdll-stubs\\ntdll-delayed.txt" "/out:$(IntDir)\ntdll-delayed.lib" /machine:x64"

… or something along those lines should be in your pre-build step. For 32-bit (x86) it will have to be:

cl.exe /nologo /c /TC /Ob0 /Gz ntdll-stubs\ntdll-delayed-stubs.c "/Fo$(IntDir)\ntdll-delayed-stubs.obj"
lib.exe /nologo "/def:ntdll-stubs\ntdll-delayed.txt" "/out:$(IntDir)\ntdll-delayed.lib" /machine:x86 "$(IntDir)\ntdll-delayed-stubs.obj"

You can find the ntdll-delayed.txt and ntdll-delayed-stubs.c in the above linked project, along with these pre-build commands (inside premake4.lua).

The effect is that we will have delay-load entries for a DLL of the (invented) name ntdll-delayed.dll. Inside our delay loading code, we can then handle this special DLL name and supply the proper module handle for ntdll.dll. The symbol names will be the same as those found in ntdll.dll anyway.

Consult delayimp.cpp for the full details, but suffice it to say, we supply our own hook by assigning to PfnDliHook __pfnDliNotifyHook2. The code looks like this (easy to convert to plain C):

namespace
{
    LPCSTR lpszNtDllName = "ntdll.dll";
    LPCSTR lpszNtDelayedDllName = "ntdll-delayed.dll";
}

static FARPROC WINAPI NtdllDliHook(unsigned dliNotify, PDelayLoadInfo pdli)
{
    switch(dliNotify)
    {
    case dliNotePreLoadLibrary:
        if(0 == lstrcmpiA(pdli->szDll, lpszNtDelayedDllName))
        {
            if(HMODULE hNtDll = ::GetModuleHandleA(lpszNtDllName))
            {
                /*lint -save -e611 */
                return reinterpret_cast<FARPROC>(hNtDll);
                /*lint -restore */
            }
        }
        break; /* proceed with default processing  */
    default:
        break;
    }
    return NULL;
}

PfnDliHook __pfnDliNotifyHook2 = NtdllDliHook;

Because I like my programs to fail early (albeit wanting to be in control of error handling), I am using the delayimp.lib facilities to forcibly resolve all functions at startup. This then completes the circle and we’re able to delay-load symbols from ntdll.dll at will:

static LONG WINAPI DelayLoadFilter(PEXCEPTION_POINTERS pExcPointers)
{
    LONG lDisposition = EXCEPTION_EXECUTE_HANDLER;
    PDelayLoadInfo pdli = (PDelayLoadInfo)(pExcPointers->ExceptionRecord->ExceptionInformation[0]);

    switch(pExcPointers->ExceptionRecord->ExceptionCode)
    {
    case VcppException(ERROR_SEVERITY_ERROR, ERROR_MOD_NOT_FOUND):
        (void)DelayLoadError(_T("The DLL %hs could not be loaded."), pdli->szDll);
        break;
    case VcppException(ERROR_SEVERITY_ERROR, ERROR_PROC_NOT_FOUND):
        {
            LPCSTR lpszDllName = pdli->szDll;
            if(0 == lstrcmpiA(pdli->szDll, lpszNtDelayedDllName))
            {
                lpszDllName = lpszNtDllName;
            }
            if (pdli->dlp.fImportByName)
            {
                (void)DelayLoadError(_T("Function %hs::%hs not found."), lpszDllName, pdli->dlp.szProcName);
            }
            else
            {
                (void)DelayLoadError(_T("Function %hs::#%u not found."), lpszDllName, pdli->dlp.dwOrdinal);
            }
        }
        break;
    default:
        lDisposition = EXCEPTION_CONTINUE_SEARCH;
        break;
    }
    return lDisposition;
}

EXTERN_C void force_resolve_all(void)
{
    __try
    {
        /* Force all delay-loaded symbols to be resolved at once */
        (void)__HrLoadAllImportsForDll(lpszNtDelayedDllName);
    }
    __except(DelayLoadFilter(GetExceptionInformation()))
    {
        ExitProcess(1);
    }

}

Hope this enlightens someone,

// Oliver

PS: I realize that the title is a misnomer. We’re not delay-loading the DLL in question (ntdll.dll is among the first to load in any Windows user mode process), but we’re technically delay-binding to the functions from ntdll.dll to allow for more flexibility in error handling.

Posted in C/C++, EN, Programming | Tagged , | Leave a comment

Remove all those pesky (Metro) apps from Windows 10

If, like I, you are sure you won’t need those pesky apps, use the following PowerShell pipeline to get rid of the provisioned packages:

Get-AppxProvisionedPackage -Online|Out-GridView -PassThru|Remove-AppxProvisionedPackage -ErrorAction Continue -Online

… to also remove those apps that are marked removable, use the following:

Get-AppxPackage -Allusers|Where-Object {!$_.NonRemovable}|Out-GridView -PassThru|Remove-AppxPackage -ErrorAction SilentlyContinue -AllUsers

These two commands will present you with a grid view to select whatever packages you want removed. Start these inside a privileged PowerShell for full effect.

Note that on Windows 10 even simple apps like the calculator are Metro apps and therefore will be missing if you select them for removal. Not that you will necessarily miss such apps a lot, just saying …

// Oliver

Posted in Administration, EN | Leave a comment

Elektronische Parkscheiben

Vor ein paar Monaten kam ich erstmals mit einer elektronischen Parkscheibe des Modells Park Lite in blau in Berührung. Nach den guten Erfahrungen damit, habe ich davon auch meiner Mutter eine geschenkt.

Nun bekam sie ihr erstes Knöllchen. Natürlich in Forst. Natürlich mit besagter elektronischer Parkscheibe.

Eine Recherche zum Thema verlief erst schleppend. Der Hersteller selbst verweist auf eine mysteriöse undatierte Verordnung des BMVI. Im Wortlaut:

Park Lite besitzt die Zulassung vom Bundesministerium für Verkehr, Bau und Stadtentwicklung unter Verweis auf Verordnung Nr. 219 zur Ausgestaltung von elektronischen Parkscheiben LA22/7332.5/7/2007968.

Schaut man dann in die StVO, findet man in §13 Abs. 3 die allgemeine Aussage, daß auch elektronische Parkuhren erlaubt sind. Allerdings sind dort keine weiteren Details gegeben. Fragliche Stelle:

Die in den Absätzen 1 und 2 genannten Einrichtungen zur Überwachung der Parkzeit müssen nicht betätigt werden, soweit die Entrichtung der Parkgebühren und die Überwachung der Parkzeit auch durch elektronische Einrichtungen oder Vorrichtungen, insbesondere Taschenparkuhren oder Mobiltelefone, sichergestellt werden kann.

Weiterhin verweist der Hersteller auf eine mysteriöse Zulassung des KBA. Die bekommt man auch von denen als PDF zugeschickt, wenn man sie anfragt. Diese Zulassung ist aber nur insofern von Belang als Einbauteile (in dem Fall elektronische) vom KBA eine Typzulassung haben müssen. Also wieder eine Sackgasse.

Die Suche nach der Verordnung ergab vor allem Kopien der Behauptungen des Herstellers. Nicht hilfreich, wenn man sich Gewißheit verschaffen will.

Erleuchtung brachte dann dieser Forenbeitrag bei Heise.de in dem der Forenteilnehmer die Antwort des BMVI auf eine Anfrage bzgl. Rechtmäßigkeit der elektronischen Parkscheiben wiedergibt. Die relevanten Passagen:

§ 13 Absatz 3 der Straßenverkehrs-Ordnung (StVO) lässt die Verwendung elektronischer Einrichtungen und Vorrichtungen zur Parkzeitüberwachung zu. Mit Verkehrsblattverlautbarung vom 26.10.2013 (VkBl. 2013, S. 1046) hat das damalige Bundesministerium für Verkehr, Bau und Stadtentwicklung die Vorgaben zur Gestaltung von elektronischen Parkscheiben abschließend beschrieben.

[…]

Entspricht eine elektronische Parkscheibe den Vorgaben der genannten Verkehrsblattverlautbarung, ist diese bei der Parkraumkontrolle durch die zuständigen Kontrollbehörden nicht zu beanstanden.
Die elektronischen Parkscheiben dürfen bereits seit dem Jahr 2007 benutzt werden (vgl. VkBl. 2007, S. 245). Die Verkehrsblattverlautbarung 219 vom 26.10.2013 wurde im Einvernehmen mit den für den Straßenverkehr und die Verkehrspolizei zuständigen obersten Landesbehörden auch zur Unterrichtung der Verkehrsüberwachungsbehörden bekannt gegeben.

Und hier wird es nun interessant, weil die Verordnung 219 im Verkehrsblatt nun auch ein Datum hat. Und die Beschreibung der besagten Veröffentlichung im Verkehrsblatt (VkBl)? “Ausgestaltung von elektronischen Parkscheiben”. Bingo!

In einem Forum fand ich dann noch die Kurzfassung der besagten Ausgestaltung:

  • Die Parkscheibe benötigt eine Genehmigung des Typs nach der Regelung Nr. 10 UN/ECE oder der RiLi 72/245/EWG i. V. m. RiLi 2009/19/EG
  • Die Parkscheibe muss sich automatisch auf den Anfang der halben Stunde einstellen, die bei Kopplung an den Fzg-Motor, dem Abstellen des Motors folgt bzw. bei Verwendung von Bewegungssensoren oder GPS, dem Zeitpunkt des Anhaltens folgt.
  • Nach der Aktivierung des Beginns der Parkzeit darf die Parkscheibe ihre Einstellung während des Parkens nicht ändern können und muss manipulationsicher sein.
  • Im digitalen Display ist eine 24-Std-Zeitangabe mit Mindesthöhe der Zahlen von 20 mm vorzusehen.
  • Die Parkscheibe trägt auf der Vorderseite die Abbildung des Zeichens 314 und über dem Display das Wort “Ankunftszeit”.
  • Werbung auf der Vorderseite ist unzulässig.

Kurzum, ich bin jetzt überzeugt, daß die elektronische Parkscheibe dieses Modells rechtmäßig ist. Bin gespannt wie der Widerspruch meiner Mutter beschieden werden wird. Das Forster Ordnungsamt ist für seine Pingeligkeit schließlich bekannt. Und sogar aktenkundig. So ging es 2010/2011 um eine zu kleine Parkscheibe die ein Autofahrer in Italien erstanden hatte, wenn ich mich recht entsinne. Erst im Februar bekam ein Cottbuser Autofahrer amtsrichterinnenlich beschieden, daß seine elektronische Parkscheibe nach Ansicht des Gerichts nicht lesbar gewesen sei.

// Oliver

Posted in DE, Meinung | Tagged , , , , | Leave a comment

Organspendeausweis in haltbarer Form

Mich hat an den zuvor verfügbaren Organspendeausweisen immer gestört, daß sie aus Papier waren und in der Geldbörse ziemlich litten. Zwar gibt es seit einiger Zeit hochoffiziell auch Plastikkärtchen im Checkkartenformat, aber dort verwischt im Zweifelsfall auch alles.

Daher fand ich diese Aktion der Kreher Druck GmbH sehr schön. Aktuell kann man dort eine vorbedruckte Plastikkarte mit einem beschreibbaren Unterschriftenfeld kostenlos bestellen. Beziehungsweise kostenlos ist es nur bei Abholung. Ansonsten fallen 1,50 € für den Versand an. Das ist wirklich keine Unsumme.

// Oliver

Posted in DE, Gedanken | Leave a comment

Rotkäppchen-Stadt Alsfeld?

Aufgrund der Tatsache, daß ich meiner Tochter regelmäßig Märchen vorlese, kam ich kürzlich mit meiner Frau ins Gespräch. Sie meinte dann, daß es doch irgendwo “in der Nähe” eine Rotkäppchen-Stadt gäbe. War mir bis dato nicht geläufig, aber gut. Sie mutmaßte auch, daß es hierbei sicher eine Verbindung zu den Gebrüdern Grimm gäbe, worauf ich sie erst einmal über den Ursprung des Rotkäppchens bei Perrault aufklärte.

Einerlei, kurzerhand sie Websuche angeworfen und auf diesen Artikel gestoßen. Dort findet sich folgende Passage:

In der Welt der Märchen spielt das Rotkäppchen in Alsfeld eine besondere Rolle. Man sagt, dass sich die Brüder Grimm von der Schwälmer Tracht mit dem roten Häubchen haben inspirieren lassen.

Leider paßt dies nicht, denn schon bei Perrault war das Rotkäppchen ein petit chaperon rouge, also übersetzt ein kleines rotes Käppchen (siehe Chaperon: im Mittelalter von Männern und Frauen getragene eng anschließende Kapuze mit kragenartigem Schulterstück). Kurzum, wie sollten sich die Gebrüder Grimm (1785–1863 u. 1786–1859) von einer lokalen Tracht rund um Alsfeld inspirieren lassen haben, wenn doch die Ursprungsversion von Perrault bereits ein knappes Jahrhundert vor den Grimms von einem roten Käppchen handelte?

Hier war wohl eher der Marketingwunsch der Stadt Alsfeld Vater der behaupteten Inspiration.

// Oliver

Posted in DE, Gedanken | Tagged , , | Leave a comment

Provinzposse in Forst

Einfach nur traurig machte mich die Lektüre dieses Artikels in der Lausitzer Rundschau. Hier hatte ein Autofahrer eine elektronische Parkscheibe benutzt, wie sie seit einiger Zeit zugelassen sind.

Und da die Forster Politesse behauptete auch bei Abschirmung der Parkscheibe vom Sonneneinfall die Ankunftszeit nicht erkannt zu haben, wurde der Autofahrer von der Richterin kurzerhand zur Zahlung des Bußgeldes und der Verfahrenskosten verurteilt. Beweise seitens des Ordnungsamtes wurden hier nicht gefordert. Die Behauptung der Politesse wirft auch wohl eher Fragen in Richtung der Genehmigung solcher Parkscheiben auf. Hier könnte man argumentieren, daß blickwinkel- und temperaturempfindliche Anzeigen wie LCD vielleicht einfach nicht zugelassen werden dürften, sondern beispielsweise ePaper zum Einsatz kommen müßte. Von der Größe her wäre das auch kostentechnisch in solchen Parkuhren vertretbar und es käme zu keinen Fragen über die Lesbarkeit oder Blickwinkelstabilität.

Jeder der weiß wie heiß der Innenraum eines Autos im Sommer werden kann, könnte sich hier vorstellen weswegen die Lesbarkeit der Flüssigkristallanzeige beeinträchtigt war. Aber das ist im Sommer eben normal und bei einer ordnungsgemäßen Anbringung der Parkscheibe fast zu erwarten. Entsprechend sollten diese Umstände im Genehmigungsverfahren getestet worden sein. Es kann jedenfalls nicht sein, daß der Autofahrer hier für Unwägbarkeiten haftet, die den Behörden durchaus vorab bekannt gewesen sein müssen.

Das Forster Ordnungsamt beweist hiermit einmal mehr eine ausgesprochene Korinthenkackerschmiede zu sein. Und immerhin hat man langjährige Erfahrung mit der Ausbildung und Förderung von Korinthenkackern. Ob das lobenswert ist, sollte jeder für sich entscheiden. Erwähnenswert ist es allemal.

// Oliver

Posted in DE, Meinung | Tagged , , , , | Leave a comment

Dear UN Secretary General Guterres

According to the news and the WEF website you said this (emphasis mine):

I think we need to understand the grievances and to understand the reasons why – the root causes of why large sectors of the population in different parts of the world today disagree with us. And we need to address those root causes and we need to show these people that we care for them.

See, the problem with this statement is that these are blatantly true words from an elitist representing the globalist plutocracy present at the WEF. You need to show these people — us — that you care. You need not actually care. All you need to do is to get the virtue signalling right again. True that …

The reason people lose faith in so-called democracies is that all the institutions of these democracies are failing one by one and the political elites worldwide, including in Western liberal democracies, have a great time cutting down civil liberties and pushing an economic agenda that benefits the top few instead the majority (as democrats will eagerly lecture one, democracy is supposed to work).

… so thank you for your honest words, Mr. Secretary General. It’s great to see some honesty left in those circles.

// Oliver (citizen of this planet)

Posted in EN, Opinion | Leave a comment

Unrecht wird auch nicht dadurch zu Recht, daß es im Gesetz steht

Über Übwerwachungspläne der Bundespolitiker berichtete heute Heise. Es scheint so, daß hier wieder einmal Bürgerrechte von unseren repräsentativen Demokraten eingeschränkt werden sollen und sich die Hersteller von Verkehrsüberwachungsgerätschaften schon auf satte Gewinne freuen dürfen, wenn dieses Gesetz aus Lobbyistenfeder — wie in unserem Staate üblich — durchgewunken wird.

Problematisch sind diese Pläne allerdings noch nicht einmal aufgrund der drohenden Überwachung. Die Automobilkonzerne, welche ihre Kunden seit Jahren betrogen haben, kommen nicht etwa nur mit einem blauen Auge davon, sondern bekommen auch noch ein steuerfinanziertes Konjunkturprogramm (“Umtauschprämien”) und das KBA macht auch noch Werbung für die entsprechenden deutschen Betrügerkonzerne.

Einfach nur traurig. Traurig und verlogen. Und da fragen sich Spitzenpolitiker allen Ernstes warum im Osten die Menschen scharenweise zu den Rechten laufen.

// Oliver

Posted in DE, Gedanken, Kapitalismuskritik, Wertewesten | Leave a comment

An ad that should get us thinking

Of course the name of the company is a label fraud. It’s not the Iceland I know and love. But the ad is worth watching.

Say hello to Rang-tan

// Oliver

Posted in /dev/null | Leave a comment

Verdummungsanstrengungen der Machteliten zeigen Erfolge

Vor kurzem gab es eine Umfrage der EU zum Thema Zeitumstellung (Sommerzeitumstellung).

Nicht nur, daß außergewöhnlich viele Deutsche an der Umfrage teilnahmen, sie plädierten auch mehrheitlich für die Abschaffung der Normalzeit und Einführung der Sommerzeit für immer. Weil? … nunja, weil die Verdummung schon weit fortgeschritten ist.

Winterzeit? Winter! Kalt, igitt! Sommerzeit? Ah, Sonnenschein, warme Abende, Eis und Baden …

Zu dumm nur, daß es keine Winterzeit gibt, sondern diese die Normalzeit ist. Hätte die Umfrage diese Terminologie verwendet, wäre die verdummte Mehrheit vielleicht nicht darauf hereingefallen. So könnte es passieren daß ab kommendem Jahr Deutschland eine Zeitzone “verrutscht”. Aber in einer Demokratie ist das nunmal so, gelle?

// Oliver

Posted in /dev/null | Leave a comment

“Stealing the Common from the Goose”

Quoted as per Celebrating the Commons: People, Ideas and Stories for a New Year

The law locks up the man or woman
Who steals the goose off the common
But leaves the greater villain loose
Who steals the common from the goose.

The law demands that we atone
When we take things we do not own
But leaves the lords and ladies fine
Who takes things that are yours and mine.

The poor and wretched don’t escape
If they conspire the law to break;
This must be so but they endure
Those who conspire to make the law.

The law locks up the man or woman
Who steals the goose from off the common
And geese will still a common lack
Till they go and steal it back.

Posted in /dev/null | Tagged , , | Leave a comment

Illustrated guide: install Visual Studio 2005 Professional on a modern Windows

Here is a little illustrated guide on how to install Visual Studio 2005 Professional on Windows 10. This guide should actually work the same with Windows versions Vista and newer.

I had to retrace the steps for a colleague, so I decided to take screenshots and publish an illustrated guide both for my benefit and yours.

// Oliver

Posted in EN, Programming, Software | Leave a comment

Messy

Microsoft has done us as users and itself a disservice. At work we are using email addresses in the form of Firstname.Lastname@onedomain.tld. They’re deemed the canonical form. Nothing unusual so far. Some of us, notably those who had something to do with Microsoft services such as MSDN subscriptions, already had an account with Microsoft to which said subscriptions were tied.

Then at some point our company started signing up to Office 365. That meant that the Active Directory accounts were now also tied to a Microsoft account, via the email addresses in their canonical form. But instead of doing the reasonable thing and letting users merge the preexisting Microsoft account with the newly established one of the same login name, Microsoft decided to do the unreasonable and automatically created a second Microsoft account using the exact same Firstname.Lastname@onedomain.tld login name. Not only was this done without user consent, it also caused plenty of issues as you can easily verify by doing a web search on the topic.

So suddenly we found ourselves with one account by the login name Firstname.Lastname@onedomain.tld which Microsoft decided to declare as “private” and another one by the identical login name Firstname.Lastname@onedomain.tld which Microsoft decided to declare as “work”. The latter was the one tied to the Active Directory. I’ll go by the names “private” and “work” account1 from now on to spare my readers a lot of confusion. To this day Microsoft doesn’t seem to offer a means of merging one account into the other. And indeed this would probably cause some additional confusion.

Now, some of the login forms offered for Microsoft services would actually – after you entered the login name – ask you if you meant to log into your “work” or “private” account. Others completely neglected the distinction, which caused a lot of annoyance and confusion, because sometimes it was outright impossible to log in with the correct account.

Recently our company changed login names for several Active Directory users to username@otherdomain.tld. The upside of which was that suddenly I had again two distinct login names: username@otherdomain.tld for the “work” account and Firstname.Lastname@onedomain.tld for the “private” account.

So all great?

Well, no. My company MSDN subscription was assigned to my “work” account up to that point. But for no reason whatsoever, other than that now there was only a single account with the login name Firstname.Lastname@onedomain.tld I ended up with the MSDN account being reassigned to the “private” account. It does make some sense, actually if you consider that the assignment of an MSDN subscription happens by assigning to an email address2. Now the way I logged in in the past to activate my MSDN subscription was evidently what caused it to be tied to the “work” account in the first place. But the fact that my “work” account no longer went under the old login name, but another account with that login name existed, caused the MSDN subscription to “switch over”.

No harm done in my case. But if you go by any rationale you can come up – other than that it’d be an inconvenience for Microsoft to offer a path to merging two accounts – then such rationales suggest this would potentially be a security issue. The other account now has access to all the downloads and product keys now.

And all because someone at Microsoft decided it’d be a good idea to allow two accounts with identical login names in the first place.

// Oliver

  1. In reality both accounts are exclusively used for stuff related to my work, which made the forced and uncalled split of the accounts especially frustrating. []
  2. In fact you can enter two addresses these days, one for sign-in purposes and one for notification emails. []
Posted in EN, Thoughts | Tagged , , , | Leave a comment

Solidarität

Traurig wenn man so einige Stimmen von von Betroffenen hört, die sich über die Warnstreiks von ver.di echauffieren. Es ist ja gerade der Sinn von Streiks im Allgemeinen eine spürbare Wirkung zu erzielen. Die Wahrscheinlichkeit aber, daß es sich bei den Interviewten um Menschen handelt die den “oberen Zehntausend” zuzuordnen wären, ist verschwindend gering. Angebracht wäre hier also Solidarität mit anderen Lohnabhängigen und Druck auf deren Arbeitgeber, bzw. im Fall des öffentlichen Dienstes auf Politiker1.

Interessen der Lohnabhängigen im öffentlichen Dienst sollten uns ebenso am Herzen liegen wie die anderer Berufsgruppen, welche gesellschaftlichen Nutzen bringen2.

Das eigentliche Problem ist nur, daß die Kommunen seit Jahren, Dank fortschreitender Marktliberalisierung, ausgeblutet werden. Deren Sichtweise kann ich also nachvollziehen, da die meisten Kommunen3 keine Überschüsse erwirtschaften und entsprechend an anderen Stellen einsparen müssen, wenn die Gehälter und/oder Löhne ansteigen.

Aber daran, daß die Kommunen Dank der Bundespolitik ausgeblutet werden, sollen doch bitte nicht die Forderungen der Lohnabhängigen scheitern?!

Und wenn einige der Interviewten zum besten geben, daß doch in Deutschland die Arbeitsbedingungen gut seien, stelle ich fest daß ich nicht so viel fressen kann wie ich kotzen möchte. Denn die Bedingungen, die mindestens seit den Kohl-Jahren teils massiv geschliffen werden, wurden zuvor mühsam erkämpft. Es ist also eine bodenlose Frechheit diese Bedingungen als quasi gottgegeben hinzustellen. Generationen von Lohnabhängigen haben dafür gekämpft. Erinnert sich noch jemand an: “Samstags gehört Vati mir!”?

// Oliver

  1. inklusive Bundespolitiker []
  2. Bänker zähle ich allgemein nicht zu diesen nützlichen Berufsgruppen. []
  3. Frankfurt scheint da eine Ausnahme zu sein []
Posted in DE, Gedanken, Kapitalismuskritik, Meinung | Leave a comment

Wer macht denn bitte sowas?

Gestern schickte mir meine Frau eine Nachricht vom S-Bahnhof Niederrad, daß der Kindersitz vom Fahrrad geklaut wurde. Sie hatte am Morgen die S-Bahn genommen und das Fahrrad am Bahnhof abgestellt. Der Kindersitz ist natürlich nicht zum Spaß montiert, sondern dient der täglichen Abholung unserer Tochter aus der Krippe.

Einen neuen1 Kindersitz haben wir seit heute, aber leider gibt es für den Römer Jockey scheinbar keine wirklich sinnvolle Sperrvorrichtung, die ein einfaches Abnehmen des Sitzes verhindert. Habe jetzt mit Kabelbindern improvisiert und hoffe, daß dies Diebe abschreckt. Zumeist haben die es ja relativ eilig. Die Hoffnung ist also daß der (Gelegenheits-)Dieb keine Werkzeuge zur Hand hat um die Kabelbinder schnell zu “entschärfen”. Bin aber auf der Suche nach einer robusteren Lösung.

Strafanzeige haben wir erstattet. Logischerweise gegen unbekannt.

// Oliver

  1. bzw. gebraucht erworbenen []
Posted in DE, Gedanken | Tagged | Leave a comment

SCHUFA knacken!

Bitte um eine kleine Spende. Sofern das Projekt erfolgreich ist, wird danach auch noch um Datenspenden gebeten. Sprich: um die Einsendung von SCHUFA-Auskünften.

Kleine Werbung dazu mit Nico Semsrott.

Posted in /dev/null, DE | Leave a comment

Telepolis-Artikel: Öffentlich-Rechtliche: “Ein tendenziell zu einseitiges Programm”

Teil 1
Teil 2

Posted in /dev/null, DE | Leave a comment

Windows 10 forced update sucks

I have written about Windows 10 before. Also about Windows 8.1, which is the predecessor in (diabolic) spirit. I was never impressed by Windows 10 and I guess it’s not going to change. Sure, Windows 10 has a very stable kernel, but the decisions — in particular to try and unify the user interface across different platforms with different input methods — are pretty questionable. And whoever, like myself, thought the start menu just couldn’t possibly get any worse after Windows 7, 8 and 8.1 was in for a big fat surprise. While the switch to that new unified input scheme started with Windows 8, in Windows 10 it still isn’t finalized. After all why else would I sometimes get to see the ugly black and white user interface for PC Settings, the one optimized for touch-based input, but in many other places it just pops up the good old GUI from the control panel. This just doesn’t fit together. Besides, no Windows version has been as patronizing as Windows 10. One nightmare scenario is still when I install SumatraPDF to replace Edge as PDF viewer and add a whole lot of other supported file formats and Windows happily hands me one toast notification after another, telling me it reverted my explicit choice. Heck, I get it, perhaps you — Microsoft — screwed up in the past and that whole thing should be a more conscious choice on part of the user. But perhaps, then, you shouldn’t prompt me yet again if I really want to use SumatraPDF and not Edge, after I explicitly configured the default program association for PDF and other files. If you make me go through hoops, don’t question my decisions once again afterwards. If I say I want SumatraPDF, I don’t want a prompt when double clicking a PDF next time around.

Anyway, I run a secondary Windows installation with Windows 10, with the other two operating systems installed being Windows 7 and Linux (Linux Mint in particular).

Now with Windows 7 users kept a minimal level of control over the Windows update process. That control has to be foregone when switching to Windows 101. Luckily I only run Windows 10 as a secondary system and for fun stuff (i.e. games). Another nightmare scenario if that Windows 10 will decide when it reboots to install its updates. Got a lengthy job running? Don’t worry, Windows will gleefully decide you didn’t actually want to run that lengthy job while logged on and having your screen locked. Windows will simply decide that if you don’t respond to its prompt about rebooting to install updates, you aren’t opposed to the reboot. Silence means consent. Of course it does, why wouldn’t it? Are you actually insane Microsoft? How am I supposed to trust my system any longer if it can’t do the one thing I expect of the operating system: stay out of my way!?! If your oh so smart OS can’t figure out that I am running a several GiB download and some other stuff I decided to leave running overnight, perhaps you shouldn’t default to the most intrusive setting: rebooting when the system is locked but unattended. And I’m a system developer, I know that Windows programs can detect if they’re running on a locked window station! So don’t tell me this is impossible. That reboot dialog could quite simply detect the scenario in question and skip the reboot.

Now, since the January updates got offered, Windows keeps pestering me with installing the respective update packages. Unfortunately it fails every single time to install at least one particular package. And to add insult to injury it doesn’t just take very long — after the reboot initiated by the update process and preceded by this …

Windows update: undoing changes during system start

… the whole thing starts over again. Meaning that without special steps I can’t even boot into a functional system anymore, because Windows will simply keep itself in a boot loop.

Best Windows ever … hah!

Oh and when Windows starts installing its updates it looks really promising, too. Although I found it odd that the X in “of X” steps varied between 5 and 7 overall steps.

Windows update: installing features

Windows update: stage 5 of 5, 15% progress

Now, how did I get out of the boot loop? I decided to use a standard method on an offline installation image, meaning I booted into the rescue system with command line prompt, looked which drive letter had been assigned to my system drive and then ran dism /image:X:\ /cleanup-image /revertpendingactions in order to be able to boot into the desktop again.

Since I ran dozens of instances of that boot loop, I also tried renaming the SoftwareDistribution folder in order to move it out of the way. None of that helped and sfc /scannow as well as dism ... /cleanup-image /restorehealth didn’t yield any better result or a hint at the cause either.

After that I turned — at the advice of a good friend — to this Microsoft article on “How to temporarily prevent a Windows Update from reinstalling in Windows 10”. What worries me is the use of temporarily as that basically means I can only hold off the problem for so long, before I am back to square zero.

Well, let’s see for how long that update can be kept at bay. But I already fear the Fall Creators update (1709) which begs for more problems, given how I installed my Windows 10. For starters I insisted on installing the system and BCD store (along with boot manager) on the same single partition and furthermore the already installed Windows 7 uses a similar method. So the in-place upgrade of Windows may end up incinerating my other Windows installation. Luckily I have backups2.

// Oliver

PS: Here the event log entries from an attempt to resolve this whole thing … taking about half an hour:

  • System store corruption detection and repair has completed. Status: 0x0, Total instances of corruption found: 0, total instances of corruption repaired: 0.
  • Initiating changes for package KB4074608. Current state is Absent. Target state is Installed. Client id: UpdateAgentLCU.
  • Initiating changes for package KB4058258. Current state is Absent. Target state is Installed. Client id: UpdateAgentLCU.
  • A reboot is necessary before package KB4074608 can be changed to the Installed state.
  • A reboot is necessary before package KB4058258 can be changed to the Installed state.
  • A reboot is necessary before package KB4074608 can be changed to the Installed state.
  • Package KB4074608 failed to be changed to the Installed state. Status: 0x800f0922.
  • Package KB4058258 failed to be changed to the Installed state. Status: 0x800f0922.

The system partition has 100 GiB unused disk space.

  1. Very little can be done by way of group policy settings to counteract the insane Windows defaults, and only on sufficiently high editions of Windows. []
  2. let’s hope they’ll work []
Posted in Administration, EN, Software | Leave a comment

#OBernadette, bleib doch im einstweiligen Ruhestand

Wie Report Mainz vorige Woche Dienstag berichtete, genießt die ehemalige Staatssekretärin und jetzige OB-Kandidatin für Frankfurt am Main, Bernadette Weyland ihren einstweiligen Ruhestand. Das bedeutet eine Zahlung von knapp 7400 € monatlich auf Steuerzahlerkosten und erfolgte laut ihrer Aussage durch Kabinettsbeschluß, entsprechend anderen Berichten auf ihren eigenen Wunsch hin. Nur daß der von Frau Weyland behauptete Gegensatz nicht existiert. Der Kabinettsbeschluß kann gut auch auf ihr eigenes Betreiben hin erfolgt sein. Muß nicht, kann aber. Hier handelt es sich also wieder um eines dieser überspezifischen Dementi, die meist von einem verdächtigen Umstand ablenken sollen.

Die Zusammenfassung der Erklärung von Frau Weyland schlägt jedoch dem Faß den Boden aus, insbesondere Punkt 2:

Zusammengefasst möchte ich Folgendes festhalten:

  1. Entgegen anders lautender Behauptungen wurde ich durch einen Kabinettsbeschluss als Staatssekretärin in den Ruhestand versetzt. Darüber wurde in den Medien bereits im vergangenen Jahr detailliert berichtet.
  2. Ich spende meine gesamten Bezüge und gebe sie komplett jeden Monat nach Eingang an den Verein „Hilfe für krebskranke Kinder Frankfurt e. V.“ weiter. Der Verein ist auf Spenden angewiesen.
  3. Mein Wahlkampf wird ausschließlich durch Spenden finanziert.

Frau Weyland wurde durch Kabinettsbeschluß — ob auf eigenes Betreiben oder nicht ist hier erst einmal irrelevant — in den einstweiligen Ruhestand versetzt. Wohlgemerkt, die Versetzung in den einstweiligen Ruhestand ohne den eigentlich vorgesehenen triftigen Grund des Vertrauensverlustes des Dienstherrn; aber nach gängiger Praxis, wie auch Frau Weyland nicht müde wird zu erklären. Allerdings hatte sie ihren Ausstieg schon im April angekündigt und hätte selbst kündigen können. Eine Kündigung hätte aber den Verzicht auf Pensionsansprüche nach sich gezogen.

Stattdessen schien ihr wohl das Übergangsgehalt selbst etwas üppig und unangenehm, weshalb sie die Steuergelder einfach edelmütig spendete. Mit dieser Verhaltensweise hat sich Frau Weyland doch eigentlich für höhere Ämter qualifiziert als nur den schnöden Oberbürgermeisterposten einer süddeutschen Großstadt. Also bleib doch im Ruhestand, #OBernadette.

// Oliver

Posted in DE, Meinung | Tagged , , , | Leave a comment