RDP “Logon attempt failed” Errors on Windows 7 and Windows 8

November 5th, 2013

Quite suddenly I found that I could no longer log in to various servers on my local network with RDP using a domain password. Local passwords worked fine.

The problem turned out to be related to running RDP 8.0 on my client machines. After much cursing and swearing I found out that all I had to do to fix the problem was modify one group policy on each of the affected workstations. The policy in question was:

\Local Computer Policy\Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Network Security: LAN Manager authentication level

and it needed to be changed to

Send LM & NTLM - use NTLMv2 session security if negotiated

Wasted an entire morning on this. What a PITA!

Fuzzy and Unreadable Fonts in Firefox on Windows 8.1

October 31st, 2013

After upgrading to Windows 8.1, I started to notice that the fonts in Firefox would occasionally go fuzzy and unreadable. This would usually happen after scrolling the page up or down a bit. I actually had to switch to Chrome while I researched a solution to the problem.

It turns out that this problem is related to Firefox’s new rendering engine, code named Azure. Apparently the good folks who maintain Firefox have completely rewritten the rendering engine with the goal of making web pages draw faster. All well and good but it seems as though there are still a few kinks that need to be worked out. Anyway, the solution to the problem is to disable use of Azure and go back to the old rendering engine. To do this you need to manually edit to Firefox configuration.

Go to the configuration page by entering about:config in the URL edit box. When the list of options appears, search for gfx.content.azure.enabled and change its setting to false. That’s all there is to it.

Creating a Remote Desktop Plugin Using Delphi - Errata

January 9th, 2013

After I had implemented my plugin and it was just going into production, I discovered a rather ugly truth.  WTSVirtualChannelOpen will succeed even if the plugin is not installed on the client side.  You don’t find out about the problem until the first time you try to write to the channel, whereupon you get an obscure error.  Something about an “invalid function”.

It appears as though the only solution to this problem is to implement a “ping” function in the plugin. Then, on the server side, you need to open the virtual channel and ping the client.  If both of these succeed then the plugin exists, otherwise it does not.

You would think that Microsoft would at least check to see if the client has registered the virtual channel before returning a handle for it.

Creating a Remote Desktop Plugin Using Delphi - Part 5

December 4th, 2012

The last thing that I need to do to my remote desktop plugin is add the code required to send data from the client to the server.
Read the rest of this entry »

Creating a Remote Desktop Plugin Using Delphi - Part 4

December 3rd, 2012

Now that we have the client side ready to receive data from the server we need to look at programming the server side.  This actually seems to be quite a bit simpler that the client side.  There are just four functions; WTSVirtualChannelOpen, WTSVirtualChannelClose, WTSVirtualChannelRead and WTSVirtualWrite.  Actually, there are a few more, but these are the ones that you need to get by. Read the rest of this entry »

Creating a Remote Desktop Plugin Using Delphi - Part 3

December 2nd, 2012

In parts 1 and 2 of this series I created a shell for a remote desktop client plugin.  The plugin as it stands so far initializes itself with the remote desktop client, responds to a few simple events and displays an “always on top” status window.  Still not very useful.  Next we need to actually open the virtual channel(s) that we will be using and respond to a few more events so that we can read data from that channel. Read the rest of this entry »

Creating a Remote Desktop Plugin Using Delphi - Part 2

November 29th, 2012

In part 1 of this series I set about creating a remote desktop plugin using Delphi. It didn’t do anything except initialize itself and display a few message boxes indicating its progress.  Not very useful.

In order for this whole thing to work the way I want it to, the plugin is going to have to interact with the user on the remote workstation.  This means displaying a form that will have to be on top of the remote desktop window.  I had some vague misgivings that remote desktop in full screen mode would be an “always on top” window that would interfere with the interaction that I need. So, as the next step in the process, I changed the plugin to create a form, make it an “always on top” window and display my status messages in a TMemo contained in the form.  Surprisingly enough this actually works quite well.

Read the rest of this entry »

Creating a Remote Desktop Plugin Using Delphi - Part 1

November 17th, 2012

I have recently found myself in a situation where I need to have an application running on a server using remote desktop interact with files and devices on the user’s local workstation.  Specifically, I need to be able to use a scanner to scan documents and / or retrieve files containing documents that have already been scanned. I found several commercial plugins that would drive the scanner but I couldn’t find anything that would allow me to interact with the user to allow her to import documents from a file.

Knowing that there are commercial plugins available, I know that it is possible to write a plugin for remote desktop.  So, I’m thinking; “How hard can it be?”.  Since we are virtually a pure Delphi shop I started looking for examples of Delphi plugins.  Surprisingly, I didn’t find any.  It is difficult to believe that no one else has done this, but I seem to be a pioneer. So, in this and the next few articles, I am going to create a remote desktop plugin using Delphi and remote desktop virtual channels and I am going to document the process here.

Read the rest of this entry »

Unable to play YouTube Videos in Firefox

June 19th, 2012

Suddenly I couldn’t play YouTube or Flixxy videos in Firefox anymore. It turns out that the latest version of the Adobe Flash Player introduced some new security feature that made things so secure that nothing worked anymore.  Oddly enough, I had to disable a setting in Real Player to get things working again.

You need to start Real Player and click the Real Player icon in the top left corner, then select Preferences.  Select Download & Recording in the left pane and uncheck Enable Web Download & Recording.

Firefox V13 Slow Accessing Google

June 19th, 2012

After installing version 13 of Firefox, I found access to Google sites to be extremely slow.  It turns out that Google has implemented a new protocol on its sites named SPDY (short for speedy) that is supposed to speed up the serving of web pages.  Sadly, the Firefox implementation of this new protocol seems to be flawed.  In order to fix the problem you need to turn off the SPDY protocol in Firefox.

To do this you need to enter about:config in the URL bar.  Then find network.http.spdy.enabled and double click it to change its value to false.  This disables SPDY in Firefox and speeds up access to Google.