<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Citrix on Remko's Blog</title><link>https://remkoweijnen.nl/blog/categories/citrix/</link><description>Recent content in Citrix on Remko's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 13 Dec 2017 13:53:08 +0000</lastBuildDate><atom:link href="https://remkoweijnen.nl/blog/categories/citrix/index.xml" rel="self" type="application/rss+xml"/><item><title>Change NetScaler Password Hash from SHA1 to SHA512</title><link>https://remkoweijnen.nl/blog/2017/12/13/change-netscaler-password-hash-sha1-sha512/</link><pubDate>Wed, 13 Dec 2017 13:53:08 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/12/13/change-netscaler-password-hash-sha1-sha512/</guid><description>&lt;p&gt;This morning I wanted to install the NetScaler patch for the TLS padding vulnerability and of course I made a backup before deploying it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you haven&amp;rsquo;t installed this patch yet I would recommended to do so: see &lt;a href="https://support.citrix.com/article/CTX230238"&gt;CTX230238&lt;/a&gt; and check out the &lt;a href="https://robotattack.org/"&gt;ROBOT attack -Return Of Bleichenbacher&amp;rsquo;s Oracle Threat&lt;/a&gt; page to check which other products you may have that are vulnerable.&lt;/p&gt;
&lt;p&gt;Upon checking the backups (I always download the backup and verify that the archive is intact) I noticed that one of my NetScaler&amp;rsquo;s uses SHA1 for the password hash whilst the other one uses SHA512:&lt;/p&gt;
&lt;p id="NVylnDh"&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/12/image.webp" class="glightbox" data-type="image" data-gallery="post-4167"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/12/image_thumb.webp" alt="image" width="432" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;
I thought that this was a little strange as both NetScaler's are running the exact same build. However one of them (the one that uses SHA512) was reinstalled recently whilst the one using SHA1 has been upgraded.</description></item><item><title>Where does the Citrix Linux VDA store settings?</title><link>https://remkoweijnen.nl/blog/2017/03/23/where-does-the-citrix-linux-vda-store-settings/</link><pubDate>Thu, 23 Mar 2017 17:02:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/03/23/where-does-the-citrix-linux-vda-store-settings/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image-21.webp" class="glightbox" data-type="image" data-gallery="post-4103"&gt;&lt;img loading="lazy" decoding="async" style="float: right; display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image_thumb-21.webp" alt="image" width="203" height="117" align="right" /&gt;&lt;/a&gt;I recently (well today really) started playing with the Citrix Linux VDA. I took Ubuntu to test because I happen to like Ubuntu.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t get it to work correctly right away though and during troubleshooting I wanted to know where the VDA is storing it&amp;rsquo;s settings.&lt;/p&gt;
&lt;p&gt;I found the following file &lt;code&gt;/etc/xdl/ctx-vda.conf&lt;/code&gt; with the following contents:&lt;/p&gt;</description></item><item><title>Google Earth fix for XenApp, RDSH &amp; Horizon</title><link>https://remkoweijnen.nl/blog/2017/02/20/google-earth-fix-xenapp-rdsh-horizon/</link><pubDate>Mon, 20 Feb 2017 20:26:51 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/02/20/google-earth-fix-xenapp-rdsh-horizon/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/Google_Earth_logo.webp" class="glightbox" data-type="image" data-gallery="post-4004"&gt;&lt;img loading="lazy" decoding="async" class="alignnone" style="float: right; margin: 0px 0px 0px 5px; display: inline;" title="Google Earth Logo" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/Google_Earth_logo_thumb.webp" alt="Google Earth Logo" width="108" height="128" align="right" /&gt;&lt;/a&gt;Both Google Earth and Google Earth Enterprise do not work correctly for multiple users on shared Hosted Shared Desktops (I still prefer to call it Server Based Computing but that&amp;rsquo;s likely because I&amp;rsquo;m an oldtimer).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem summary&lt;/strong&gt;&lt;br&gt;
So let&amp;rsquo;s look at the actual issue: the first user on a server is able to launch Google Earth but for any subsequent users on the same server Google Earth fails silently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Problem details&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Google Earth uses various synchronization objects such as Events and Mutexes but registers those in the &lt;strong&gt;\Global&lt;/strong&gt; namespace instead of the &lt;strong&gt;\Local&lt;/strong&gt; namespace.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Citrix Receiver Unknown client error 1110</title><link>https://remkoweijnen.nl/blog/2017/02/07/3745/</link><pubDate>Tue, 07 Feb 2017 15:08:27 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/02/07/3745/</guid><description>&lt;p&gt;Citrix Receiver and StoreFront error messages are sometimes confusing or lacking details so I decided to make little blog notes about common issues when I see them. So without further ado here&amp;rsquo;s #1:&lt;/p&gt;
&lt;p&gt;In Citrix Receiver I tried to logon remotely via NetScaler Gateway and got the following error message: &amp;ldquo;&lt;em&gt;Cannot get your apps from the store&lt;/em&gt;&amp;rdquo;&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/img_5899c6cbba7eb.webp" class="glightbox" data-type="image" data-gallery="post-3745"&gt;&lt;img loading="lazy" decoding="async" class="wp-image-3746 size-medium" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/img_5899c6cbba7eb-300x169.webp" alt="Cannot get your apps from the store" width="300" height="169" /&gt;&lt;/a&gt;&lt;figcaption&gt;Citrix Receiver&lt;/figcaption&gt;&lt;/figure&gt;</description></item><item><title>Citrix PVS RAM cache size Performance Counters</title><link>https://remkoweijnen.nl/blog/2016/03/30/citrix-pvs-ram-cache-size-performance-counters/</link><pubDate>Wed, 30 Mar 2016 14:58:54 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2016/03/30/citrix-pvs-ram-cache-size-performance-counters/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2016/03/clip_image002.jpg" class="glightbox" data-type="image" data-gallery="post-3655"&gt;&lt;img loading="lazy" decoding="async" title="clip_image002" style="float: right; display: inline" hspace="12" alt="clip_image002" src="https://remkoweijnen.nl/blog/wp-content/uploads/2016/03/clip_image002_thumb.jpg" width="88" align="right" height="88" /&gt;&lt;/a&gt; &lt;p&gt;There has long &lt;a href="http://andrewmorgan.ie/2015/08/accurately-checking-the-citrix-pvs-cache-in-ram-overflow-to-disk-ram-cache-size/"&gt;been a debate&lt;/a&gt; about how to accurately view the size of your Citrix Provisioning Services ram cache size. SO much so that even &lt;a href="https://www.citrix.com/blogs/2015/08/19/digging-into-pvs-with-poolmon-and-wpa/"&gt;Citrix clarified&lt;/a&gt; on how to view this detail using yet another tool &lt;/p&gt; &lt;p&gt;The thing is, this is all fine and well, but it&amp;rsquo;s a bit of a pig to actually get this data when you need it, or in an automated way. Wouldn&amp;rsquo;t it be better if we could have something easier?&lt;/p&gt; &lt;p&gt;Lately, &lt;a href="http://www.andrewmorgan.ie/"&gt;Andrew Morgan&lt;/a&gt; and I decided to sit down and create an easy to use, Windows performance counter for the key metrics in a PVS cache and provide them to the community for use.&lt;/p&gt; &lt;p&gt;These counters turned out to be fascinating, as they really show how the cache works.&lt;/p&gt; &lt;p&gt;Our latest counters (which can be downloaded below) provide the following counters for easy access:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2016/03/clip_image004.webp" class="glightbox" data-type="image" data-gallery="post-3655"&gt;&lt;img loading="lazy" decoding="async" title="PVS Ram cache size (MB) | PVS metadata size (MB) | PVS Write Cache VHD disk size (MB) | PVS Ram Cache Percent used" style="display: inline" alt="Performance Monitor" src="https://remkoweijnen.nl/blog/wp-content/uploads/2016/03/clip_image004_thumb.webp" width="411" height="325" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;PVS Ram cache size (MB)&lt;/li&gt; &lt;li&gt;PVS metadata size (MB)&lt;/li&gt; &lt;li&gt;PVS Write Cache VHD disk size (MB)&lt;/li&gt; &lt;li&gt;PVS Ram Cache Percent used. &lt;em&gt;&lt;/li&gt; &lt;i&gt; &lt;br /&gt;&lt;/em&gt; As there is no accurate way to detect how much ram is assigned to cache via Citrix Provisioning services, this value must be provided or this performance counter is missing. &lt;br /&gt;&lt;/i&gt;&lt;/ul&gt;&lt;/p&gt;</description></item><item><title>Synchronizing Citrix ShareFile with PowerShell</title><link>https://remkoweijnen.nl/blog/2015/01/28/synchronizing-citrix-sharefile-with-powershell/</link><pubDate>Wed, 28 Jan 2015 11:39:17 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2015/01/28/synchronizing-citrix-sharefile-with-powershell/</guid><description>&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2015/01/ShareFileLogo.gif" data-type="image" data-gallery="post-3555"&gt;&lt;img loading="lazy" decoding="async" title="ShareFileLogo" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: right; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ShareFileLogo" src="https://remkoweijnen.nl/blog/wp-content/uploads/2015/01/ShareFileLogo_thumb.gif" width="64" align="right" height="64" /&gt;&lt;/a&gt;The Citrix ShareFile Sync application is quite limited in functionality, one of those limitations is that you can only synchronize to a single (one) local folder.&lt;/p&gt; &lt;p&gt;As Helge Klein wrote in his excellent article &amp;quot;&lt;a href="https://helgeklein.com/blog/2014/01/configuring-citrix-sharefile-sync-powershell/"&gt;Configuring Citrix ShareFile Sync from PowerShell&lt;/a&gt;&amp;quot; this is simply a GUI restriction and not a restriction in the actual ShareFile sync engine.&lt;/p&gt; &lt;p&gt;Helge describes that you can easily do this in PowerShell with the following example:&lt;/p&gt; 
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;Add-SyncJob example&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;span class="codelang"&gt;powershell&lt;/span&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download="add-syncjob-example.ps1" href="data:text/plain;charset=utf-8;base64,QWRkLVN5bmNKb2IgLUFwcGxpY2F0aW9uSWQgMSAtQXBwbGljYXRpb25OYW1lICJQb3dlclNoZWxsIiAtQWNjb3VudCBoZWxnZWtsZWluLnNoYXJlZmlsZS5jb20KLVJlbW90ZUZvbGRlck5hbWUgImZvYzg2YzE5LWQ5MDQtNDM0YS05ZDY3LXh4eHh4eHh4eHh4eCIgLUxvY2FsRm9sZGVyUGF0aCAiRDpcRGF0ZW5cU3luYyB0byBTaGFyZUZpbGUiCi1BdXRoVHlwZSA0IC1Vc2VyTmFtZSB4eHh4eHhAaGVsZ2VrbGVpbi5jb20gLVN5bmNEaXJlY3Rpb24gMiAtUGFzc3dvcmQgIk1ZIFNIQVJFRklMRSBQQVNTV09SRCI="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;Add-SyncJob&lt;/span&gt; &lt;span class="n"&gt;-ApplicationId&lt;/span&gt; &lt;span class="mf"&gt;1&lt;/span&gt; &lt;span class="n"&gt;-ApplicationName&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PowerShell&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-Account&lt;/span&gt; &lt;span class="n"&gt;helgeklein&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;sharefile&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;-RemoteFolderName&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;foc86c19-d904-434a-9d67-xxxxxxxxxxxx&amp;#34;&lt;/span&gt; &lt;span class="n"&gt;-LocalFolderPath&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;D:\Daten\Sync to ShareFile&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;-AuthType&lt;/span&gt; &lt;span class="mf"&gt;4&lt;/span&gt; &lt;span class="n"&gt;-UserName&lt;/span&gt; &lt;span class="n"&gt;xxxxxx&lt;/span&gt;&lt;span class="nv"&gt;@helgeklein&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="py"&gt;com&lt;/span&gt; &lt;span class="n"&gt;-SyncDirection&lt;/span&gt; &lt;span class="mf"&gt;2&lt;/span&gt; &lt;span class="n"&gt;-Password&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;MY SHAREFILE PASSWORD&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;While the command was accepted, nothing was synchronized.&lt;/p&gt;</description></item><item><title>Convert Citrix License Server VPX to OVF</title><link>https://remkoweijnen.nl/blog/2013/09/27/convert-citrix-license-server-vpx-to-ovf/</link><pubDate>Fri, 27 Sep 2013 16:41:54 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/09/27/convert-citrix-license-server-vpx-to-ovf/</guid><description>&lt;p&gt;I wanted to run a virtual Citrix License server in my LAB. &lt;/p&gt; &lt;p&gt;Unfortunately Citrix only provides the &lt;a href="http://www.citrix.com/downloads/licensing/license-server/license-server-vpx-version-1110.html" target="_blank"&gt;VPX License Server&lt;/a&gt; in XenServer format (.xva). If you want to run the VPX on VMware ESX or Microsoft Hyper-V you need to convert it first.&lt;/p&gt; &lt;p&gt;The option to convert a Xen Virtual Appliance to OVF format was removed in XenConvert 2.4.1. So for a conversion you need version 2.3.1.&lt;/p&gt; &lt;p&gt;Here are the direct download links:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#35383d"&gt;&lt;a href="http://downloadns.citrix.com.edgesuite.net/akdlm/5320/XenConvert_Install.exe" target="_blank"&gt;XenConvert 2.3.1 (Windows 32-bit)&lt;/a&gt;&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#35383d"&gt;&lt;a href="http://downloadns.citrix.com.edgesuite.net/akdlm/5322/XenConvert_Install_x64.exe" target="_blank"&gt;XenConvert 2.3.1 (Windows 64-bit)&lt;/a&gt;&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;However when I tried to convert the downloaded VPX (Citrix_License_Server_VPX_v11.10.0_Build_12002.xva) I got the error &amp;quot;Failed to decode tar header record&amp;quot;:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/09/SNAGHTML490f56b6.webp" class="glightbox thickbox" data-type="image" data-gallery="post-3397"&gt;&lt;img loading="lazy" decoding="async" title="Citrix XenConvert 2.3.1" style="display: inline" alt="Failed to decode tar header record" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/09/SNAGHTML490f56b6_thumb.webp" width="400" height="275" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;</description></item><item><title>Run a Process when Citrix Receiver Exits</title><link>https://remkoweijnen.nl/blog/2013/09/24/run-a-process-when-citrix-receiver-exits/</link><pubDate>Tue, 24 Sep 2013 16:11:59 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/09/24/run-a-process-when-citrix-receiver-exits/</guid><description>&lt;p&gt;A while ago I was doing some research for &lt;a href="https://remkoweijnen.nl/blog/2013/08/10/magic-filter-preview/" target="_blank"&gt;Magic Filter&lt;/a&gt; when I stumbled upon something interesting within Receiver.&lt;/p&gt;
&lt;p&gt;Inside wfica32.exe is a function called &lt;em&gt;_Eng_RunExecutableOnExit. &lt;/em&gt;That name caught my interest, I&amp;rsquo;ve made it a little more readable with Ida Pro:&lt;/p&gt;</description></item><item><title>PNAgent Icon Data Algorithm</title><link>https://remkoweijnen.nl/blog/2013/08/08/pnagent-icon-data-algorithm/</link><pubDate>Thu, 08 Aug 2013 17:34:05 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/08/08/pnagent-icon-data-algorithm/</guid><description>&lt;p&gt;Some time ago I wrote about the &lt;a href="https://remkoweijnen.nl/blog/2012/02/13/scripting-citrix-online-plugin-settings/" target="_blank"&gt;PNAgent data&lt;/a&gt; that is stored in the registry in XML format.&lt;/p&gt;
&lt;p&gt;After that post &lt;a href="http://andrewmorgan.ie/" target="_blank"&gt;Andrew Morgan&lt;/a&gt; asked me if I could extract the PNAgent icons from the XML data.&lt;/p&gt;
&lt;p&gt;That got me interested so let&amp;rsquo;s look at this data!&lt;/p&gt;
&lt;p&gt;If you look at XML from PNAgent the icondata as in the AppData.Details.Icon node you&amp;rsquo;ll see something like this:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/08/image5.webp" data-type="image" data-gallery="post-3330"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/08/image_thumb3.webp" width="408" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seems like the icon data is stored/encrypted in a proprietary format.&lt;/p&gt;</description></item><item><title>ClickOnce Applications in Enterprise Environments</title><link>https://remkoweijnen.nl/blog/2013/08/05/clickonce-applications-in-enterprise-environments/</link><pubDate>Mon, 05 Aug 2013 16:51:21 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/08/05/clickonce-applications-in-enterprise-environments/</guid><description>&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/t71a733d.aspx" target="_blank"&gt;ClickOnce&lt;/a&gt; is a Microsoft technology that enables an end user to install an application from the web without administrative permissions.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;That's great isn't it? &lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;While ClickOnce may sound great to developers it's actually a nightmare for Enterprise administrators because they try to prevent users from installing software themselves.&lt;/p&gt; &lt;p&gt;ClickOnce also incorporates an Automatic Updates mechanism which means that users might run different or not tested/approved versions...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Virtual Environments &lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;It get's even worse in virtual environments such as VDI and SBC where machines are often non-persistent. Each time the users starts the application they will see a screen similar to the one below while they actually download and install it over and over again:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/08/SNAGHTML87937a.webp" data-type="image" data-gallery="post-3308"&gt;&lt;img loading="lazy" decoding="async" title="SNAGHTML87937a" style="margin: 0px; display: inline" alt="SNAGHTML87937a" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/08/SNAGHTML87937a_thumb.webp" width="240" height="136" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If the environment is persistent, it's not guaranteed that the user works on the same machine each day. This means that the application will be installed on every box the user ever logs onto...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;How does it work? &lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;In order to understand how we can best treat ClickOnce applications we need to understand how they work since MSDN documentation does not describe this in detail. &lt;/p&gt;</description></item><item><title>Redirect Registry by Modifying .NET Executable</title><link>https://remkoweijnen.nl/blog/2013/05/30/redirect-registry-by-modifying-net-executable/</link><pubDate>Thu, 30 May 2013 16:18:23 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/05/30/redirect-registry-by-modifying-net-executable/</guid><description>&lt;p&gt;Yesterday I was troubleshooting an application that was migrated to Citrix XenApp. &lt;/p&gt; &lt;p&gt;The application is able to use a high precision scale which is attached to the client pc's com port. This com port is redirected to XenApp.&lt;/p&gt; &lt;p&gt;While testing users reported several issues, let's have a look at them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Error configuring COM Port&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;Within the application the comport to which the scale is connected must be configured:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/image3.webp" data-type="image" data-gallery="post-3284"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Compoort instellen" alt="De compoort lezer staat uit" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/image_thumb3.webp" width="240" height="95" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After pressing &amp;quot;Registreer&amp;quot; to register the new com port the following error message was shown&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/image4.webp" data-type="image" data-gallery="post-3284"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Fout" alt="Er staat geen compoort in het register. Registreer eerste de juiste compoort" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/image_thumb4.webp" width="240" height="58" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Application Compatibility Fixing to the Extreme?</title><link>https://remkoweijnen.nl/blog/2013/05/23/application-compatibility-fixing-to-the-extreme/</link><pubDate>Thu, 23 May 2013 16:48:36 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/05/23/application-compatibility-fixing-to-the-extreme/</guid><description>&lt;p&gt;Today's blog is about an application that was migrated to Citrix XenApp. During testing the users reported that several application menu's were missing.&lt;/p&gt; &lt;p&gt;An example is the settings menu where the System tab is missing:&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;strong&gt;Fat Client:&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;&lt;strong&gt;XenApp:&lt;/strong&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/clip_image0025.jpg" data-type="image" data-gallery="post-3256"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="clip_image002[5]" alt="clip_image002[5]" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/clip_image0025_thumb.jpg" width="197" height="159" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="200"&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/clip_image002.jpg" data-type="image" data-gallery="post-3256"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="clip_image002" alt="clip_image002" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/clip_image002_thumb.jpg" width="206" height="165" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;I suspected a permissions issue so I added the account to the Local Administrator group to verify that. And indeed the System tab was visible.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Process Monitor&lt;/u&gt;&lt;/strong&gt; &lt;br /&gt;I removed the account from the Administrators group and fired up &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx" target="_blank"&gt;Process Monitor&lt;/a&gt;. I set a filter on the process name (ra60.exe) and on Result (ACCESS DENIED):&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/SNAGHTML1b3aa033.webp" data-type="image" data-gallery="post-3256"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="SNAGHTML1b3aa033" alt="SNAGHTML1b3aa033" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/05/SNAGHTML1b3aa033_thumb.webp" width="240" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Scriptable Citrix Password Encoder</title><link>https://remkoweijnen.nl/blog/2013/03/19/scriptable-citrix-password-encoder/</link><pubDate>Tue, 19 Mar 2013 16:27:49 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/03/19/scriptable-citrix-password-encoder/</guid><description>&lt;p&gt;A while ago I &lt;a href="https://remkoweijnen.nl/blog/2012/05/13/encoding-and-decoding-citrix-passwords/"&gt;published&lt;/a&gt; a tool to Encode and Decode Citrix passwords. Today I am publishing a small update to this tool that makes it scriptable by adding a &lt;a href="http://en.wikipedia.org/wiki/Component_Object_Model" target="_blank"&gt;COM interface&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;If you start the tool without parameters you will get the GUI, just like before:&lt;/p&gt; &lt;p&gt;&lt;img loading="lazy" decoding="async" title="Citrix Password Hasher by Remko Weijnen" alt="Encrypt | Decrypt Password | Hash | Citrix | Ctx1" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/05/image_thumb3.webp" width="419" height="84" /&gt;&lt;/p&gt; &lt;p&gt;To use the COM interface you first need to register the executable with the /regserver switch:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/03/SNAGHTML185eb4ec.webp" data-type="image" data-gallery="post-3152"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Register CtxPass" alt="CtxPass /RegServer" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/03/SNAGHTML185eb4ec_thumb.webp" width="414" height="64" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After the registration you can call it using any language that supports COM. To get you started I wrote a few examples&lt;/p&gt;</description></item><item><title>The case of the COM Port Redirection</title><link>https://remkoweijnen.nl/blog/2013/03/11/the-case-of-the-com-port-redirection/</link><pubDate>Mon, 11 Mar 2013 14:53:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/03/11/the-case-of-the-com-port-redirection/</guid><description>&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/03/image.webp" data-type="image" data-gallery="post-3079"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: right" title="Secutest" alt="Secutest" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/03/image_thumb.webp" width="128" height="122" /&gt;&lt;/a&gt;One of my colleagues asked me to assist in troubleshooting an application called SmartWare FM running on Citrix XenApp. &lt;/p&gt; &lt;p&gt;This application reads data from an external device called SECUTEST.&lt;/p&gt; &lt;p&gt;The device is connected to a COM port which is redirected to the XenApp session. In contrast to Microsoft Remote Desktop Services COM ports are not automatically redirected in XenApp but need to be mapped via eg a logonscript (NET USE COM1: \\Client\COM1:) or using UEM.&lt;/p&gt; &lt;p&gt;In my case the COM port was mapped with RES Workspace Manager:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/03/image1.webp" data-type="image" data-gallery="post-3079"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="image" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/03/image_thumb1.webp" width="371" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The case of the missing audio</title><link>https://remkoweijnen.nl/blog/2013/01/25/the-case-of-the-missing-audio/</link><pubDate>Fri, 25 Jan 2013 16:07:06 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/01/25/the-case-of-the-missing-audio/</guid><description>&lt;p&gt;Yesterday I was asked to investigate a problem with a presentation pc. Even though the volume was set maximal there was not audio output.&lt;/p&gt; &lt;p&gt;The machine was used to connect to a Citrix XenApp desktop and RES Workspace Extender was used to integrate local applications in the XenApp desktop.&lt;/p&gt; &lt;p&gt;The local sound volume control was published as a subscribed application so I launched that and verified that the volume was set to Maximum:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/01/image16.webp" data-type="image" data-gallery="post-3007"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Volumeregeling" alt="Volumeregeling" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/01/image_thumb16.webp" width="415" height="211" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I decided to launch the local explorer shell and noticed that there were two volume control icons in the Traybar:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/01/image17.webp" data-type="image" data-gallery="post-3007"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Traybar" alt="Volume Controls" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/01/image_thumb17.webp" width="96" height="25" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Return username instead of computername in a ThinApp</title><link>https://remkoweijnen.nl/blog/2013/01/15/return-username-instead-of-computername-in-a-thinapp/</link><pubDate>Tue, 15 Jan 2013 11:50:07 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/01/15/return-username-instead-of-computername-in-a-thinapp/</guid><description>&lt;p&gt;&lt;img style="display: inline; float: right" alt="File:VMware ThinApp v4.0 icon.png" align="right" src="http://upload.wikimedia.org/wikipedia/commons/c/c0/VMware_ThinApp_v4.0_icon.png" width="95" height="95" /&gt;One of the lesser known features of VMware ThinApp is that you can supply a Virtual Computer name.&lt;/p&gt; &lt;p&gt;This is documented as follows in the &lt;a href="http://www.vmware.com/pdf/thinapp47_packageini_reference.pdf"&gt;package.ini reference guide&lt;/a&gt;:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;VirtualComputerName Parameter&lt;/strong&gt; &lt;br /&gt;The VirtualComputerName parameter determines whether to rename the computer name, to avoid naming conflicts between the capture process and the deployment process.&lt;/p&gt;</description></item><item><title>License Check fails on Citrix XenApp</title><link>https://remkoweijnen.nl/blog/2012/12/07/license-check-fails-on-citrix-xenapp/</link><pubDate>Fri, 07 Dec 2012 16:30:07 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/12/07/license-check-fails-on-citrix-xenapp/</guid><description>&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image14.webp" data-type="image" data-gallery="post-2870"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: right;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image_thumb14.webp" alt="image" width="70" height="65" align="right" /&gt;&lt;/a&gt;Today I was asked to assist in getting an Excel Add-In to work on Citrix XenApp.&lt;/p&gt;
&lt;p&gt;The application was packaged into a Thinapp by one of our package engineers.&lt;/p&gt;
&lt;p&gt;However when testing the Add-In on Citrix XenApp the following message appeared:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image15.webp" data-type="image" data-gallery="post-2870"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image_thumb15.webp" alt="image" width="240" height="68" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Apparently this application does a license check that fails when run from another server (how bad).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Disclaimer&lt;/span&gt;&lt;/strong&gt;&lt;br&gt;
Before we go on: I would like to make clear that my goal is not to be able to use an application without license. I am just trying to make it work within the customer&amp;rsquo;s environment.&lt;/p&gt;</description></item><item><title>Application Hangs when Scanning in Citrix XenApp</title><link>https://remkoweijnen.nl/blog/2012/12/06/application-hangs-when-scanning-in-citrix-xenapp/</link><pubDate>Thu, 06 Dec 2012 16:10:50 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/12/06/application-hangs-when-scanning-in-citrix-xenapp/</guid><description>&lt;p&gt;Another interesting issue today with an application that runs on Citrix XenApp.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Environment&lt;/span&gt;&lt;/strong&gt;&lt;br&gt;
Customer has a Citrix XenApp 5 environment running on Windows Server 2003. Clients are all Windows XP and run the Citrix Online Plugin 12.3 full screen.&lt;/p&gt;
&lt;p&gt;RES Workspace Extender is used to integrate locally installed application into the XenApp Session. Users have no access to the local desktop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Symptoms&lt;/span&gt;&lt;/strong&gt;&lt;br&gt;
This particular application scans invoices using a USB scanner attached to the client and runs them trough a workflow.&lt;br&gt;
Whenever the Start scan button was pressed the application froze.&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/SNAGHTML48ec098.webp" data-type="image" data-gallery="post-2814"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="SNAGHTML48ec098" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/SNAGHTML48ec098_thumb.webp" alt="SNAGHTML48ec098" width="408" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Return username instead of computername to Applications</title><link>https://remkoweijnen.nl/blog/2012/12/06/return-username-instead-of-computername-to-applications/</link><pubDate>Thu, 06 Dec 2012 10:45:40 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/12/06/return-username-instead-of-computername-to-applications/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image8.webp" class="glightbox thickbox" data-type="image" data-gallery="post-2841"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: right" title="image" alt="image" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image_thumb8.webp" width="87" height="74" /&gt;&lt;/a&gt;Some applications use the computer's name as a unique identifier, rather than using the user name. In a single-user-per-computer environment, this strategy works well. &lt;/p&gt; &lt;p&gt;However, in a Multi User environment such as Citrix XenApp or Microsoft's Remote Desktop Services (Terminal Server), all connected users report the same computername. &lt;/p&gt; &lt;p&gt;If the application relies on unique computernames to handle tasks such as file and record locking, then the application will fail. &lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image9.webp" class="glightbox thickbox" data-type="image" data-gallery="post-2841"&gt;&lt;img loading="lazy" decoding="async" style="margin: 11px 6px 5px 0px; display: inline; float: left" title="image" alt="image" align="left" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image_thumb9.webp" width="32" height="32" /&gt;&lt;/a&gt;We can however set an &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;186499"&gt;Application Compatibility Flag&lt;/a&gt; in the registry to return the username instead of the computername.&lt;/p&gt; &lt;p&gt;To demonstrate this behaviour I wrote a small Test Application called TestAppCompatFlags.exe.&lt;/p&gt;</description></item><item><title>File not found error when scanning using Twain Redirection in Citrix XenApp</title><link>https://remkoweijnen.nl/blog/2012/12/04/file-not-found-error-when-scanning-using-twain-redirection-in-citrix-xenapp/</link><pubDate>Tue, 04 Dec 2012 15:07:10 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/12/04/file-not-found-error-when-scanning-using-twain-redirection-in-citrix-xenapp/</guid><description>&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image.webp" data-type="image" data-gallery="post-2795"&gt;&lt;img loading="lazy" decoding="async" style="margin: 0px 0px 2px; display: inline; float: right;" title="Twain" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/12/image_thumb.webp" alt="Twain Logo" width="75" height="70" align="right" /&gt;&lt;/a&gt;Scanners attached to client machines can be used from within a Citrix XenApp session via a mechanism called Twain Redirection.&lt;/p&gt;
&lt;p&gt;For this mechanism to work correctly the file twain_32.dll must be present in the Windows directory.&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #35383d;"&gt;On Windows 2008 this dll should be copied from winsxs (side by side) to the windows directory as described in &lt;a href="http://support.citrix.com/article/CTX123981"&gt;CTX123981&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;On Windows 2003 the dll is already in the correct directory, however applications that are not &lt;a href="http://msdn.microsoft.com/en-us/library/01cfys9z%28v=vs.80%29.aspx"&gt;Terminal Server Aware&lt;/a&gt; cannot find this dll because the Windows directory is redirected to the user profile. Citrix recommends copying twain_32.dll to each user&amp;rsquo;s profile directory but this will take up unnecessary space.&lt;/p&gt;
&lt;p&gt;So what alternatives do we have?&lt;/p&gt;</description></item><item><title>Screen flickering with PowerPoint 2010 on Citrix XenApp</title><link>https://remkoweijnen.nl/blog/2012/11/30/screen-flickering-with-powerpoint-2010-on-citrix-xenapp/</link><pubDate>Fri, 30 Nov 2012 14:18:22 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/11/30/screen-flickering-with-powerpoint-2010-on-citrix-xenapp/</guid><description>&lt;p&gt;Within half an hour of writing the article &amp;quot;&lt;a href="https://remkoweijnen.nl/blog/2012/11/30/application-causes-screen-flickering-in-citrix-xenapp-session/"&gt;Application causes Screen Flickering in Citrix XenApp Session&lt;/a&gt;&amp;quot; I got a message that the hotfix in that article also fixes a similar problem in PowerPoint 2010.&lt;/p&gt; &lt;p&gt;Office 2010 uses hardware acceleration for displaying images and when this is enabled (which is the default) you will see constant screen flicker when you try to display a presentation with Images on Citrix XenApp (Server 2003):&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:1baf0443-1822-4d90-8c1b-cf6059f5de34" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;object width="448" height="252"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uhWNwQQUZ3o?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uhWNwQQUZ3o?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Screen Flickering when running WPF Applications on Citrix XenApp&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;</description></item><item><title>Application causes Screen Flickering in Citrix XenApp Session</title><link>https://remkoweijnen.nl/blog/2012/11/30/application-causes-screen-flickering-in-citrix-xenapp-session/</link><pubDate>Fri, 30 Nov 2012 13:28:54 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/11/30/application-causes-screen-flickering-in-citrix-xenapp-session/</guid><description>&lt;p&gt;Yesterday I was asked to troubleshoot an interesting issue with an application running on Citrix XenApp.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Environment&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;This customer is running Citrix XenApp 5 on Windows Server 2003 (x86). On the Client Side the Online Plugin version 12.3 is used.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;/span&gt;&lt;br&gt;
When this particular application was active the screen was flickering and black blocks appeared at seemingly random places. Further more it was not possible to resize the window:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/11/image.webp" data-type="image" data-gallery="post-2778"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/11/image_thumb.webp" alt="image" width="425" height="239" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My experience is that display issues are often related to either HDX Flash Redirection (offloading flash to the client) or the Multi Monitor hook.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Citrix License Server Crash</title><link>https://remkoweijnen.nl/blog/2012/08/23/citrix-license-server-crash/</link><pubDate>Thu, 23 Aug 2012 15:29:40 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/08/23/citrix-license-server-crash/</guid><description>&lt;p&gt;After updating a Citrix License server from 11.6.1 to 11.10 the Citrix Licensing Service crashed immediately after startup.&lt;/p&gt; &lt;p&gt;In the Event Log the following error was shown:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/08/image12.webp" class="glightbox thickbox" data-type="image" data-gallery="post-2743"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Event ID 1000 | Category 100 | Citrix Licensing Service" alt="Application Error | Faulting application lmadmin.exe, version 11.10.0.9, faulting module msvcp80.dll, version 8.0.50727.6195, fault address 0x000038db" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/08/image_thumb12.webp" width="216" height="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I suspected that there was a corrupt licensing file in the MyFiles folder (Default C:\Program Files\Citrix\Licensing\MyFiles).&lt;/p&gt;</description></item><item><title>Modify VB Executable to force Taskbar Button</title><link>https://remkoweijnen.nl/blog/2012/08/04/modify-vb-executable-to-force-taskbar-button/</link><pubDate>Sat, 04 Aug 2012 11:07:18 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/08/04/modify-vb-executable-to-force-taskbar-button/</guid><description>&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/08/image.webp" data-type="image" data-gallery="post-2693"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: right" title="image" alt="image" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/08/image_thumb.webp" width="97" height="93" /&gt;&lt;/a&gt;I had to troubleshoot an application that was published with Citrix XenApp. The problem with this application was that it didn't have an button/icon in the taskbar and the window would sometimes disappear.&lt;/p&gt; &lt;p&gt;I noticed that this (cr)application was written in Visual Basic, so I decided to run it through a &lt;a href="http://www.vb-decompiler.org/"&gt;decompilation tool&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The decompiler was able to list the forms used in the Application:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/08/image1.webp" data-type="image" data-gallery="post-2693"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="image" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/08/image_thumb1.webp" width="123" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Decoding Citrix IMA Datastore Password</title><link>https://remkoweijnen.nl/blog/2012/05/29/decoding-citrix-ima-datastore-password/</link><pubDate>Tue, 29 May 2012 21:46:30 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/05/29/decoding-citrix-ima-datastore-password/</guid><description>&lt;p&gt;This morning &lt;a href="http://www.twitter.com/arbeijer/status/207398601066942464"&gt;Arjan Beijer&lt;/a&gt; sent me an interesting link to a &lt;a href="http://www.youtube.com/watch?v=Cb8-kvJkojY"&gt;youtube video&lt;/a&gt; about obtaining the Citrix IMA Datastore password using Windbg.&lt;/p&gt;
&lt;p&gt;The video shows a method, discovered by &lt;a href="https://twitter.com/#!/fdwl"&gt;Denis Gundarev&lt;/a&gt; to obtain the IMA Datastore password. Basically he uses DSMaint.exe and set&amp;rsquo;s a breakpoint on the call to &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa380882(v=vs.85).aspx"&gt;CryptUnprotectData&lt;/a&gt; and then reads the password from memory.&lt;/p&gt;
&lt;p&gt;I tried to call the CryptUnprotectData API with the data read from the registry directly but this failed with error NTE_BAD_KEY_STATE, this is defined in winerror.h and it means &amp;ldquo;Key not valid for use in specified state&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Citrix Launcher Progress Update 1</title><link>https://remkoweijnen.nl/blog/2012/05/17/citrix-launcher-progress-update-1/</link><pubDate>Thu, 17 May 2012 23:19:12 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/05/17/citrix-launcher-progress-update-1/</guid><description>&lt;p&gt;After figuring out how to &lt;a href="https://remkoweijnen.nl/blog/2012/05/13/encoding-and-decoding-citrix-passwords/"&gt;encode and decode the Citrix passwords&lt;/a&gt; my next step for the upcoming Citrix Launcher is experiment with config.xml and authenticating to the Citrix Web Interface.&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/05/image4.webp" data-type="image" data-gallery="post-2609"&gt;&lt;img loading="lazy" decoding="async" style="float: left; display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/05/image_thumb4.webp" alt="image" width="45" height="39" align="left" /&gt;&lt;/a&gt;I imported the NFuse.dtd from the Citrix Web Interface into Delphi with the XML Data Binding Wizard. The results in an NFuse Unit so I can easily create the XML data.&lt;/p&gt;
&lt;p&gt;To create an authentication packet I use the following code:&lt;/p&gt;</description></item><item><title>Encoding and Decoding Citrix Passwords</title><link>https://remkoweijnen.nl/blog/2012/05/13/encoding-and-decoding-citrix-passwords/</link><pubDate>Sun, 13 May 2012 21:55:02 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/05/13/encoding-and-decoding-citrix-passwords/</guid><description>&lt;p&gt;I am working on a launcher tool for Citrix XenApp that can not only connect to a published application or published desktop but can also leverage Citrix Workspace Control to reconnect to disconnected and/or active sessions.&lt;/p&gt; &lt;p&gt;There doesn't seem to be any sdk that exposed the data we need so I am trying to reproduce what the Citrix online plugi-in does.&lt;/p&gt; &lt;p&gt;I used a HTTP monitoring tool to capture the traffic between the Online plug-in and the Web Interface. First the online plug-in will retrieve the config.xml from the server specified via the Change Server option:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/05/image2.webp" data-type="image" data-gallery="post-2586"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Change Server - Citrix online plug-in" alt="What is the address of the server hosting your published resources? | Server Address | Example: servername (for non-secure connections) | https://servername (for secure connections)" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/05/image_thumb2.webp" width="240" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Cookie Error on Citrix XenApp</title><link>https://remkoweijnen.nl/blog/2012/03/29/cookie-error-on-citrix-xenapp/</link><pubDate>Thu, 29 Mar 2012 10:02:10 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/03/29/cookie-error-on-citrix-xenapp/</guid><description>&lt;p&gt;A user reported that the following error while visiting a website on a Citrix XenApp server:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image26.webp" class="glightbox" data-type="image" data-gallery="post-2574"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Cookie Error" alt="You must have cookies enabled in order to user this tool. Please reload the page and try again." src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image_thumb26.webp" width="415" height="94" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I tried adding the site to the Trusted Sites List and adding the url to the Per Site Privacy list:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image27.webp" class="glightbox" data-type="image" data-gallery="post-2574"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="image" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image_thumb27.webp" width="415" height="256" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;But this didn't work, but I noticed that the site was "flickering" a lot so I suspected that HDX Flash Acceleration was the problem.&lt;/p&gt;</description></item><item><title>Edit Document requires a Windows SharePoint Services-compatible application</title><link>https://remkoweijnen.nl/blog/2012/03/09/edit-document-requires-a-windows-sharepoint-services-compatible-application/</link><pubDate>Fri, 09 Mar 2012 14:23:11 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/03/09/edit-document-requires-a-windows-sharepoint-services-compatible-application/</guid><description>&lt;p&gt;Today I was troubleshooting a message that appeared when a user tries to edit a document from SharePoint on a Citrix XenApp server. &lt;p&gt;The user browsed to a word document on Sharepoint and selected &amp;ldquo;Edit in Microsoft Office Word&amp;rdquo; from the Combobox:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image8.webp" class="glightbox" data-type="image" data-gallery="post-2526"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Sharepoint Document Context Menu" alt="Edit in Microsoft Office Word" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image_thumb8.webp" width="156" height="124" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This would present the following error message to the user:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image9.webp" class="glightbox" data-type="image" data-gallery="post-2526"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Windows Internet Explorer" alt="&amp;#39;Edit Document&amp;#39; requires a Windows SharePoint Services-compatible application and Microsoft Internet Explorer 6.0 or greater." src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/03/image_thumb9.webp" width="415" height="73" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Convert MCli output into PowerShell Objects</title><link>https://remkoweijnen.nl/blog/2012/02/29/convert-mcli-output-into-powershell-objects/</link><pubDate>Wed, 29 Feb 2012 21:35:49 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/02/29/convert-mcli-output-into-powershell-objects/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/image21.webp" class="glightbox" data-type="image" data-gallery="post-2468"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: right" title="image" alt="image" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/image_thumb21.webp" width="83" height="83" /&gt;&lt;/a&gt;I was experimenting today with the PowerShell cmdlets for Citrix Provisioning Server. I was surprised to learn that the output of these cmdlets are not PowerShell types such as collections and objects with methods and properties but just plain text output.&lt;/p&gt; &lt;p&gt;A google search for a method to quickly convert the garbage output to objects led me to &lt;a href="http://www.out-web.net/?p=599" target="_blank"&gt;this blog post&lt;/a&gt; by Frank Peter. He describes a clever use of the switch statement with regular expressions with the Get-DiskInfo cmdlet.&lt;/p&gt; &lt;p&gt;Using Frank's code as a basis I wrote a generic function that converts Mcli output to an array of objects.&lt;/p&gt;</description></item><item><title>Where to download TraceView</title><link>https://remkoweijnen.nl/blog/2012/02/22/where-to-download-traceview/</link><pubDate>Wed, 22 Feb 2012 13:57:29 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/02/22/where-to-download-traceview/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/image19.webp" class="glightbox" data-type="image" data-gallery="post-2461"&gt;&lt;img loading="lazy" decoding="async" style="margin: 0px 0px 0px 5px; display: inline; float: right" title="TraceView Icon" alt="TraceView Icon" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/image_thumb19.webp" width="48" height="48" /&gt;&lt;/a&gt;Various Citrix knowledge base articles refer to a tool called TraceView.exe to view the output of diagnostic traces.&lt;/p&gt; &lt;p&gt;&lt;a href="http://support.citrix.com/article/CTX106233" target="_blank"&gt;CTX106233&lt;/a&gt; describes where to download traceview but this article is outdated because it describes an older version of the DDK (the Windows Driver Development).&lt;/p&gt; &lt;p&gt;The current DDK version (7.1.0) can be downloaded &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=11800" target="_blank"&gt;here&lt;/a&gt; and has the filename "GRMWDK_EN_7600_1.ISO".&lt;/p&gt;</description></item><item><title>Session freeze when starting Excel</title><link>https://remkoweijnen.nl/blog/2012/02/20/session-freeze-when-starting-excel/</link><pubDate>Mon, 20 Feb 2012 15:42:25 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/02/20/session-freeze-when-starting-excel/</guid><description>&lt;p&gt;&lt;strong&gt;Environment&lt;/strong&gt; &lt;br /&gt;Windows 2003 Enterprise (32 bit), Citrix XenApp 5, RES Workspace Manager 2011, McAfee VirusScan Enterprise 8.7.0i.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt; &lt;br /&gt;When a opening an Excel workbook from Sharepoint the whole session freezes.&lt;/p&gt; &lt;p&gt;I asked the user to open an Excel workbook from Sharepoint and I noticed the following popup:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/image7.webp" class="glightbox" data-type="image" data-gallery="post-2450"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="Message from webpage" alt="Some files can harm your computer. If the file information looks suspicious or you do not fully trust the source, do not open the file | You are opening the following file: | File name: My Workbook.xls | From: Sharepoint" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/image_thumb7.webp" width="415" height="97" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;So my first thought was that the user somehow clicked this message to the background and IE was waiting for a response.&lt;/p&gt;</description></item><item><title>Scripting Citrix Online Plugin Settings</title><link>https://remkoweijnen.nl/blog/2012/02/13/scripting-citrix-online-plugin-settings/</link><pubDate>Mon, 13 Feb 2012 13:55:45 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/02/13/scripting-citrix-online-plugin-settings/</guid><description>&lt;p&gt;The Citrix Online Plugin has a number of settings that can be changed. This includes things as Window Size and Color Depth:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/SNAGHTML84f9096.webp" class="glightbox" data-type="image" data-gallery="post-2404"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="Options - Citrix online plug-in" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/SNAGHTML84f9096_thumb.webp" alt="Session Options | Window size | Default | Full Screen | Requested Color Quality" width="415" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In my case I wanted to preset the Window size to Full Screen so using Process Monitor I checked where the Online Plugin writes this setting. I Used a Filter that includes only the Online Plugin (PNAMain.exe) and the RegSetValue Operation:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/SNAGHTML8593f5c.webp" class="glightbox" data-type="image" data-gallery="post-2404"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="Process Monitor Filter" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/02/SNAGHTML8593f5c_thumb.webp" alt="Filter on Process Name is PNAMain.exe | Operation is RegSetValue" width="415" height="259" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Harmony Client crashes upon exit</title><link>https://remkoweijnen.nl/blog/2012/01/31/harmony-client/</link><pubDate>Tue, 31 Jan 2012 16:37:08 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/01/31/harmony-client/</guid><description>&lt;p&gt;Today I was troubleshooting the application "Harmony Client" which crashed upon exiting:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/01/image21.webp" class="glightbox" data-type="image" data-gallery="post-2368"&gt;&lt;img loading="lazy" decoding="async" style="display: inline" title="HARMONY_Client.exe - Toepassingsfout" alt="Toepassingspop-up: HARMONY_Client.exe - Toepassingsfout : De instructie op 0x77e621b6 verwijst naar geheugen op 0x4b750000. Een lees- of schrijfbewerking op het geheugen is mislukt: | The memory could not be read." src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/01/image_thumb21.webp" width="415" height="84" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The application had been thinapped and the error only appeared when starting the thinapped version. &lt;br /&gt;&lt;/p&gt;</description></item><item><title>Bypassing RES/Appsense Application Security</title><link>https://remkoweijnen.nl/blog/2012/01/27/bypassing-res-application-security/</link><pubDate>Fri, 27 Jan 2012 16:15:38 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/01/27/bypassing-res-application-security/</guid><description>&lt;p&gt;The video below shows a Proof of Concept of bypassing Application Security in RES Workspace Manager .&lt;/p&gt;
&lt;p&gt;Please note that at this time the code is not publicly available so please don&amp;rsquo;t ask for it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT 2&lt;/strong&gt;: I added a video that I received from someone who tried my Excel Sheet with AppSense Application Manager.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; I wanted to clarify a couple of things regarding this post.&lt;/p&gt;
&lt;p&gt;First of all I would like to explain why I wrote this code and why I choose to test it with RES WM.&lt;/p&gt;
&lt;p&gt;I had the idea about this approach a long time ago but I never got around to actually do it. The main reason was that I needed to convert Delphi code to VBA and especially converting some Windows headers was a lot of work. Then suddenly I noticed that someone had already converted the headers, so I all I had to do was rewrite the code that used it to VBA.&lt;/p&gt;
&lt;p&gt;The choice for RES was made because of two reasons:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;If you want to beat something, you want to beat the best and I most certainly consider RES WM to be one of the top products.&lt;/li&gt;
	&lt;li&gt;At the time I wrote the POC code I had access to an enviroment with RES in it.&lt;/li&gt;
&lt;/ol&gt;
I would like to emphasize that RES contacted me very quickly after publishing this blog. I've had contact with RES and they showed a very constructive approach with their primary goal being a fix or guidance for their customers. Hats of to RES taking a constructive approach and I will be working together with RES on this issue.
&lt;p&gt;Finally I would like to state that I didn&amp;rsquo;t expect this post to draw this much attention, if I did I would have probably taken another approach.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>The case of the Slow Xerox Universal Print Driver</title><link>https://remkoweijnen.nl/blog/2012/01/04/the-case-of-the-slow-xerox-universal-print-driver/</link><pubDate>Wed, 04 Jan 2012 22:54:29 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2012/01/04/the-case-of-the-slow-xerox-universal-print-driver/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/01/image9.webp" class="glightbox" data-type="image" data-gallery="post-2319"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: right" title="Xerox Logo" alt="Xerox Logo" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/01/image_thumb9.webp" width="64" height="64" /&gt;&lt;/a&gt;Earlier this week I was asked to investigate a problem with the Xerox Universal Printer Driver. Users complained that printing to a Xerox printer was much slower than printing to an HP printer.&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2012/01/image10.webp" class="glightbox" data-type="image" data-gallery="post-2319"&gt;&lt;img loading="lazy" decoding="async" style="margin: 0px 9px 0px 0px; display: inline; float: left" title="Excel 2007 Icon" alt="Excel 2007 Icon" align="left" src="https://remkoweijnen.nl/blog/wp-content/uploads/2012/01/image_thumb10.webp" width="67" height="65" /&gt;&lt;/a&gt;I received a reference document from a user, a rather complex Excel sheet. When selecting multiple tabs it took almost a minute to generate a print preview in Excel 2007 running on Windows 2003 with XenApp 5.&lt;/p&gt; &lt;p&gt;I was aware of a bug in the Xerox Universal Driver where almost 9.000 files were copied into the user's profile directory (I wrote about that in an &lt;a href="https://remkoweijnen.nl/blog/2011/02/08/the-case-of-the-citrix-ready-printer-driver/" target="_blank"&gt;earlier post&lt;/a&gt;). But this seemed to be another problem.&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;</description></item><item><title>NTVDM encountered a hard error</title><link>https://remkoweijnen.nl/blog/2011/12/14/ntvdm-encountered-a-hard-error/</link><pubDate>Wed, 14 Dec 2011 21:41:22 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/12/14/ntvdm-encountered-a-hard-error/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/image7.webp" class="glightbox" data-type="image" data-gallery="post-2254"&gt;&lt;img loading="lazy" decoding="async" style="margin: 0px 3px 0px 0px; display: inline; float: left" title="MS-Dos Logo" alt="MS-Dos Logo" align="left" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/image_thumb7.webp" width="74" height="82" /&gt;&lt;/a&gt;Today I troubleshooted an old DOS application that needed to run on a 32 bit Citrix XenApp Server. The last time I saw an actual DOS application in a production environment must be years ago.&lt;/p&gt; &lt;p&gt;When starting the application, the WOW subsystem (NTVDM) crashed with the message: "NTVM encountered a hard error.":&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/image8.webp" class="glightbox" data-type="image" data-gallery="post-2254"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="ntvdm.exe - System Error" border="0" alt="NTVDM encoutered a hard error" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/image_thumb8.webp" width="198" height="104" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After spending some time troubleshooting I remembered a similar issue from a few years ago where a DOS application worked fine from the Console but refused to work from an RDP or ICA session.&lt;/p&gt;</description></item><item><title>Citrix online plug-in received a corrupt ICA File</title><link>https://remkoweijnen.nl/blog/2011/12/13/citrix-online-plug-in-received-a-corrupt-ica-file/</link><pubDate>Tue, 13 Dec 2011 10:58:24 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/12/13/citrix-online-plug-in-received-a-corrupt-ica-file/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/image4.webp" class="glightbox" data-type="image" data-gallery="post-2242"&gt;&lt;img loading="lazy" decoding="async" style="display: inline; float: left" title="image" alt="image" align="left" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/image_thumb4.webp" width="38" height="35" /&gt;&lt;/a&gt;I was testing a Script I wrote to launch a Citrix XenApp session using the Ica Client Object. Typical code to do this may look like this:&lt;/p&gt; 
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;span class="codelang"&gt;vbnet&lt;/span&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".vb" href="data:text/plain;charset=utf-8;base64,Q29uc3QgY0h0dHBCcm93c2VyID0gInNvbWV1cmwubG9jYWwiCkNvbnN0IGNDb2xvckRlcHRoID0gNAoKJyBDcmVhdGUgdGhlIElDQSBDbGllbnQgT2JqZWN0CkRpbSBvYmpJY2EgOiBTZXQgb2JqSWNhID0gQ3JlYXRlT2JqZWN0KCJDaXRyaXguSWNhQ2xpZW50LjIiKQoKJyBTZXQgQ3JlZGVudGlhbHMKb2JqSWNhLlVzZXJuYW1lID0gIkpvaG5Eb2UiCm9iakljYS5TZXRQcm9wICJDbGVhclBhc3N3b3JkIiwgIlNlY3JldDAxIgpvYmpJY2EuRG9tYWluID0gIkNPTlRPU08iCgonIENvbm5lY3Rpb24gU2V0dGluZ3MKb2JqSWNhLkJyb3dzZXJQcm90b2NvbCA9ICJIVFRQb25UQ1AiCm9iakljYS5UcmFuc3BvcnRSZWNvbm5lY3RFbmFibGVkID0gVHJ1ZQpvYmpJY2EuSHR0cEJyb3dzZXJBZGRyZXNzID0gY0h0dHBCcm93c2VyCgonIFNlc3Npb24gU2V0dGluZ3MKb2JqSWNhLkFkZHJlc3MgPSAiTXlBcHAiCm9iakljYS5BcHBsaWNhdGlvbiA9ICJNeUFwcCIKb2JqSWNhLkRlc2lyZWRDb2xvciA9IGNDb2xvckRlcHRoCm9iakljYS5TY3JlZW5QZXJjZW50ID0gMCAnIEZ1bGwgU2NyZWVuCm9iakljYS5EZXNpcmVkSFJlcyA9IDAKb2JqSWNhLkRlc2lyZWRWUmVzID0gMApvYmpJY2EuTGF1bmNoID0gVHJ1ZQoKJyBDb25uZWN0Cm9iakljYS5Db25uZWN0"&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vbnet" data-lang="vbnet"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Const&lt;/span&gt; &lt;span class="n"&gt;cHttpBrowser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;someurl.local&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Const&lt;/span&gt; &lt;span class="n"&gt;cColorDepth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39; Create the ICA Client Object
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;objIca&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;objIca&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CreateObject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Citrix.IcaClient.2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39; Set Credentials
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;JohnDoe&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SetProp&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;ClearPassword&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Secret01&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;CONTOSO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39; Connection Settings
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BrowserProtocol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;HTTPonTCP&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TransportReconnectEnabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HttpBrowserAddress&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cHttpBrowser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39; Session Settings
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Address&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;MyApp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Application&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;MyApp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DesiredColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cColorDepth&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScreenPercent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt; &lt;span class="c"&gt;&amp;#39; Full Screen
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DesiredHRes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DesiredVRes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Launch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39; Connect
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;objIca&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Connect&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;On my testmachine it ran nicely but on a customer machine the script failed with the error 2312 "&lt;em&gt;The Citrix online plug-in received a corrupt ICA File. The ICA File has no [ApplicationServer] section&lt;/em&gt;":&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/SNAGHTML108b7fef.webp" class="glightbox" data-type="image" data-gallery="post-2242"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Error number 2312" border="0" alt="The Citrix online plug-in received a corrupt ICA File. The ICA File has no [ApplicationServer] section" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/12/SNAGHTML108b7fef_thumb.webp" width="419" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Extremely slow Virtual Machines on HP Smart Array P410</title><link>https://remkoweijnen.nl/blog/2011/05/02/extremely-slow-virtual-machines-on-hp-smart-array-p410/</link><pubDate>Mon, 02 May 2011 14:15:50 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/05/02/extremely-slow-virtual-machines-on-hp-smart-array-p410/</guid><description>&lt;p&gt;I was deploying virtualized Citrix XenApp Servers on HP BL460c G6 servers and somehow the storage (direct attached) responded very slowly.&lt;/p&gt; &lt;p&gt;I had expected reduced performance (see &lt;a href="https://remkoweijnen.nl/blog/2010/10/16/slow-power-on-and-storage-operations-with-hp-smart-array-p410i-controller-on-vmware-vsphere-4-0/" target="_blank"&gt;my earlier post&lt;/a&gt;) since I didn't have the&amp;#160; Battery Backed Write Cache module installed. &lt;br /&gt;I did order them but had to start deployment before they arrived. &lt;/p&gt; &lt;p&gt;I did not however expect such an extreme bad performance. Deployment took ages or sometimes failed completely and when logging in to a VM it responded very sluggish. &lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Disk Latency&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I looked in the vSphere console what the Disk Latency was. Latency under 10ms is usually considered good while a latency between 10 and 20ms is a potential performance problem.&lt;/p&gt; &lt;p&gt;I was shocked to notice that the Disk Latency was much higher with peaks toward 2.000 ms (2 seconds!):&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/DiskLatency.webp" class="glightbox" data-type="image" data-gallery="post-1719"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DiskLatency" border="0" alt="DiskLatency" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/DiskLatency_thumb.webp" width="362" height="243" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;</description></item><item><title>The Case of the Citrix Ready Printer Driver</title><link>https://remkoweijnen.nl/blog/2011/02/08/the-case-of-the-citrix-ready-printer-driver/</link><pubDate>Tue, 08 Feb 2011 21:47:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/02/08/the-case-of-the-citrix-ready-printer-driver/</guid><description>&lt;p&gt;I had a very interesting issue today on a new Citrix XenApp 5 farm. We went into production yesterday and we noticed a number of issues:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Printing in general was slow, especially when a user connects to a printer for the first time.&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;User Profiles were rapidly growing in size (from the expected 1-2 MB to over 40 MB).&lt;/li&gt;
	&lt;li&gt;Logons took much longer then in the testing period (and since we use a Full Screen Desktop the user doesn't see any progress).&lt;/li&gt;
	&lt;li&gt;Performance monitoring showed CPU spikes in Word, Excel and IE processes.&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="color: #4c4c4c;"&gt;I took a look at the profiles first and noticed that the size growth was due to a Xerox subfolder in %APPDATA%:</description></item><item><title>PowerShell Script to add reboot scheduled task for Citrix</title><link>https://remkoweijnen.nl/blog/2011/01/31/powershell-script-to-add-reboot-scheduled-task-for-citrix/</link><pubDate>Mon, 31 Jan 2011 22:53:47 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/31/powershell-script-to-add-reboot-scheduled-task-for-citrix/</guid><description>&lt;p&gt;I wanted to create a Scheduled Task on my Citrix Servers to have the reboot every other night.&lt;/p&gt;
&lt;p&gt;The idea is that half of the servers will reboot in a night and the other half the following night.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://support.microsoft.com/kb/320188" target="_blank"&gt;TSSHUTDN&lt;/a&gt; tool is handy since it can issue a warning to logged on users, log them out after a certain period and finally issue the reboot.&lt;/p&gt;
&lt;p&gt;Since I needed to add a scheduled task to many servers I wanted to do this with a script.&lt;/p&gt;
&lt;p&gt;WMI Exposes the &lt;a href="http://msdn.microsoft.com/en-us/library/aa394399(v=VS.85).aspx" target="_blank"&gt;Win32_ScheduledJob&lt;/a&gt; Class and it&amp;rsquo;s &lt;a href="http://msdn.microsoft.com/en-us/library/aa389389(v=vs.85).aspx" target="_blank"&gt;Create Method&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>PowerShell Script to raise Citrix Video Memory</title><link>https://remkoweijnen.nl/blog/2011/01/28/powershell-script-to-raise-citrix-video-memory/</link><pubDate>Fri, 28 Jan 2011 15:23:08 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/28/powershell-script-to-raise-citrix-video-memory/</guid><description>&lt;p&gt;On a Citrix XenApp 5 environment a user reported that he was unable to start a Full Screen session on a Dual Monitor Configuration.&lt;/p&gt;
&lt;p&gt;He received this error message:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox" data-type="image" data-gallery="post-1316" href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/foutmelding-2.webp"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="foutmelding (2)" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/foutmelding-2_thumb.webp" border="0" alt="foutmelding (2)" width="244" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Script to install all print drivers on Citrix or Terminal Server</title><link>https://remkoweijnen.nl/blog/2011/01/25/script-to-install-all-print-drivers-on-citrix-or-terminal-server/</link><pubDate>Tue, 25 Jan 2011 15:24:14 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/25/script-to-install-all-print-drivers-on-citrix-or-terminal-server/</guid><description>&lt;p&gt;I wrote a PowerShell script to install all printer drivers on a Citrix or Terminal Server.&lt;/p&gt;
&lt;p&gt;Actually the script isn&amp;rsquo;t specific to Citrix or Terminal Server but on such environments we need to preload all drivers because users do not have the permissions to do that.&lt;/p&gt;
&lt;p&gt;I have chosen for PowerShell because you can do it in a one-liner which makes it easy to run this script from my Altiris server on all Citrix Servers.&lt;/p&gt;
&lt;p&gt;The idea is that we enumerate all the shared printers on a Printer Server and make a connection to each printer. This will make sure that the driver is installed if it wasn&amp;rsquo;t already present.&lt;/p&gt;
&lt;p&gt;The script could even be scheduled to enforce that newly added printer drivers are added to each Citrix Server.&lt;/p&gt;</description></item><item><title>The case of the UPS discovery not working</title><link>https://remkoweijnen.nl/blog/2011/01/24/the-case-of-the-ups-discovery-not-working/</link><pubDate>Mon, 24 Jan 2011 15:22:03 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/24/the-case-of-the-ups-discovery-not-working/</guid><description>&lt;p&gt;I am doing a project involving a Citrix Xenapp environment running on VMWare vSphere.&lt;/p&gt;
&lt;p&gt;The physical machines are powered by two Eaton Uninterruptable Power Supplies that both a network card.&lt;/p&gt;
&lt;p&gt;I received some &lt;a href="http://download.mgeops.com/install/linux/ipp/IPP_how_to_vmware_esx_en_1_9.pdf" target="_blank"&gt;documentation&lt;/a&gt; that describes how to implement automatic shutdown in a VMWare vSphere environment.&lt;/p&gt;
&lt;p&gt;This documentation describes that a &lt;a href="http://www.vmware.com/support/developer/vima/" target="_blank"&gt;vSphere Management Assistant&lt;/a&gt; (vMA) must be deployed in which we need to install some software from Eaton.&lt;/p&gt;
&lt;p&gt;I followed the documentation that even described the needed iptables rules needed for their software.&lt;/p&gt;
&lt;p&gt;In the last step a discovery is done and the UPS is supposed to be found. And you have probably guessed by now: it didn&amp;rsquo;t!&lt;/p&gt;
&lt;p&gt;At first I figured that maybe the iptables configuration was still too tight so I stopped the iptables service but that didn&amp;rsquo;t help.&lt;/p&gt;</description></item><item><title>SasLibEx Screencast</title><link>https://remkoweijnen.nl/blog/2011/01/19/saslibex-screencast/</link><pubDate>Wed, 19 Jan 2011 22:36:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/19/saslibex-screencast/</guid><description>&lt;p&gt;I just recorded a SasLibEx Screencast, it shows some of the very powerfull features of SasLibEx.&lt;/p&gt;
&lt;p&gt;The following features are shown:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Simulate Ctrl Alt Del (Secure Attention Sequence)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Cancel Ctrl Alt Del&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Lock Workstation&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Unlock Workstation (without credentials)&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Disable Ctrl Alt Del&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Enable Ctrl Alt Del again&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Cancel pending UAC request&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;Is Desktop Locked&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8c371d04-5435-4a86-a54a-5611345258b5" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;
&lt;div&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="448" height="252" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="src" value="http://www.youtube.com/v/Nyl4_ECe5xI?hl=en&amp;amp;hd=1" /&gt;&lt;embed type="application/x-shockwave-flash" width="448" height="252" src="http://www.youtube.com/v/Nyl4_ECe5xI?hl=en&amp;amp;hd=1"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;div style="width: 448px; clear: both; font-size: 0.8em;"&gt;SasLibEx Feature Demo #1&lt;/div&gt;
&lt;/div&gt;
&lt;section class="comments"&gt;
&lt;h2&gt;1 Comments&lt;/h2&gt;
&lt;ol class="comment-list"&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;&lt;a href="http://topsy.com/www.remkoweijnen.nl/blog/2011/01/19/saslibex-screencast/?utm_source=pingback&amp;amp;amp;utm_campaign=L2" rel="nofollow ugc"&gt;Tweets die vermelden SasLibEx Screencast | Remko Weijnen&amp;#x27;s Blog (Remko&amp;#x27;s Blog) -- Topsy.com&lt;/a&gt;&lt;/span&gt; &lt;time datetime="2011-01-20"&gt;Jan 20, 2011&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;[...] Dit blogartikel was vermeld op Twitter door Remko Weijnen, Remko Weijnen. Remko Weijnen heeft gezegd: First #SasLibEx ScreenCast! showing simulate ctrl alt del, unlock workstation without credentials, disable cad and more http://bit.ly/fFM8wB [...]&lt;/p&gt;</description></item><item><title>Self Signing Word Macro’s</title><link>https://remkoweijnen.nl/blog/2011/01/12/self-signing-word-macros/</link><pubDate>Wed, 12 Jan 2011 15:45:51 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/12/self-signing-word-macros/</guid><description>&lt;p&gt;Today I noticed that a recently added Application to the Citrix Test environment added a Macro to the Office Startup directory.&lt;/p&gt;
&lt;p&gt;When a user launches Word he will get a popup because the Template (.dot file) was not signed:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox" data-type="image" data-gallery="post-1175" href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/OfficeMacro.webp"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="OfficeMacro" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/OfficeMacro_thumb.webp" border="0" alt="OfficeMacro" width="244" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It would have been a lot easier if Application Vendors sign their stuff because in that case I could have just added the certificate using Group Policy (&lt;a href="https://remkoweijnen.nl/blog/2011/01/11/java-webapplication-certificates-and-citrix/" target="_blank"&gt;yesterday&amp;rsquo;s post&lt;/a&gt; describes how to do this).&lt;/p&gt;
&lt;p&gt;Application Vendors usually tell you that you should lower the Macro security in Office (or Word in this case) to Low to get rid of this message. But I think there&amp;rsquo;s a better solution: we will sign the .dot file ourselves!&lt;/p&gt;</description></item><item><title>Java Webapplication, certificates and Citrix</title><link>https://remkoweijnen.nl/blog/2011/01/11/java-webapplication-certificates-and-citrix/</link><pubDate>Tue, 11 Jan 2011 15:23:47 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/11/java-webapplication-certificates-and-citrix/</guid><description>&lt;p&gt;Yesterday I created an Unattended Installation of a webapplication. Of course it was &amp;ldquo;just a web link&amp;rdquo; and the application vendor usually says: you don&amp;rsquo;t need to install it just go the URL and that&amp;rsquo;s it.&lt;/p&gt;
&lt;p&gt;The reality is usually that you go to the URL and need to install several (ActiveX) components and maybe other dependencies such as Java.&lt;/p&gt;
&lt;p&gt;While a user may have the permissions for this on his own pc, on a Citrix or Terminal Server environment this is highly unlikely.&lt;/p&gt;
&lt;p&gt;So we need to package and pre-install this for the users.&lt;/p&gt;
&lt;p&gt;Nothing special so far but this particular application had some special things that were interesting enough to blog about.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s start with what happened, I visited the URL of an application called Centric Key 2 Financien.&lt;/p&gt;
&lt;p&gt;First I got a few popups with Certificates that needed to be accepted:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox" data-type="image" data-gallery="post-1147" href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/Cert1.png"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Cert1" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/Cert1_thumb.webp" border="0" alt="Cert1" width="244" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The application&amp;rsquo;s instructions say that the user must accept this and set the &amp;ldquo;Always trust content from this publisher&amp;rdquo; checkbox.&lt;/p&gt;</description></item><item><title>Paging file and Memory Dump</title><link>https://remkoweijnen.nl/blog/2011/01/07/paging-file-and-memory-dump/</link><pubDate>Fri, 07 Jan 2011 13:45:55 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/07/paging-file-and-memory-dump/</guid><description>&lt;p&gt;I often hear that people configure the Paging File (on Citrix or Terminal Servers) on a seperate volume but, the reasons is either performance or the chance that the Paging File might corrupt the volume.&lt;/p&gt;
&lt;p&gt;However if at some point you would like to create a Memory Dump you must have a paging file on the boot volume.&lt;/p&gt;</description></item><item><title>Default User Profile: Remko’s solution</title><link>https://remkoweijnen.nl/blog/2011/01/04/default-user-profile-remkos-solution/</link><pubDate>Tue, 04 Jan 2011 15:46:18 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/01/04/default-user-profile-remkos-solution/</guid><description>&lt;p&gt;If you are implementing a Citrix, Terminal Server or even just a plain Client-Server environment you will need to create a Default User Profile at some point.&lt;/p&gt;
&lt;p&gt;The Default User Profile can be thought of as the initial registry settings that are used when a new profile is created.&lt;/p&gt;
&lt;p&gt;Many people think that the Default User Profile is available in regedit via HKEY_USERS.Default but this is NOT the Default User Profile.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/usersdefault.webp" class="glightbox" data-type="image" data-gallery="post-1066"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/01/usersdefault-small.webp" alt="UsersDefault" width="430" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Citrix Online Plugin could not launch the requested published application</title><link>https://remkoweijnen.nl/blog/2010/12/22/citrix-online-plugin-could-not-launch-the-requested-published-application/</link><pubDate>Wed, 22 Dec 2010 14:10:31 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/12/22/citrix-online-plugin-could-not-launch-the-requested-published-application/</guid><description>&lt;p&gt;After doing an unattended installation of the Citrix Online Plugin it was not possible to launch a Published Application.&lt;/p&gt;
&lt;p&gt;It would just give the error mesage: "citrix online plugin could not launch the requested published application".&lt;/p&gt;
&lt;p&gt;Even though the installation finished without errors and the logfiles indicated no failure at all I was able to fix it by using 2 steps described in &lt;a title="Offline Plug-in 11.2 Unattended Installation Fails" href="http://support.citrix.com/article/CTX123761" target="_blank"&gt;CTX123761&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Default Explorer View</title><link>https://remkoweijnen.nl/blog/2010/12/19/default-explorer-view/</link><pubDate>Sun, 19 Dec 2010 14:40:40 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/12/19/default-explorer-view/</guid><description>&lt;p&gt;As you probably know there are several different Folder Views in Windows Explorer:&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2010/12/explorerview.webp" alt="ExplorerView" width="183" height="276" /&gt;
&lt;p&gt;The Explorer keeps tracks of the last used View per Folder in the registry in the key HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Bags. This &lt;a title="Changes to the size, view, icon or position of a folder are lost" href="http://support.microsoft.com/kb/813711" target="_blank"&gt;KB article&lt;/a&gt; sort of desribes this functionality.&lt;/p&gt;</description></item><item><title>Writing Environment Variables to the Registry from a Script</title><link>https://remkoweijnen.nl/blog/2010/12/13/writing-environment-variables-to-the-registry-from-a-script/</link><pubDate>Mon, 13 Dec 2010 20:52:59 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/12/13/writing-environment-variables-to-the-registry-from-a-script/</guid><description>&lt;p&gt;I usually change the text below the &amp;ldquo;This Computer&amp;rdquo; icon to reflect the current username and servername:&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2010/12/useroncomputer.webp" alt="UserOnComputer" width="86" height="83" /&gt;
&lt;p&gt;This is an ancient trick, just set the the &lt;em&gt;LocalizedString&lt;/em&gt; Value of the following key:&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;span class="codelang"&gt;batch&lt;/span&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".bat" href="data:text/plain;charset=utf-8;base64,SEtFWV9DTEFTU0VTX1JPT1RcQ0xTSURcezIwRDA0RkUwLTNBRUEtMTA2OS1BMkQ4LTA4MDAyQjMwMzA5RH0="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-batch" data-lang="batch"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;to &amp;ldquo;%USERNAME% on %COMPUTERNAME%&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It get&amp;rsquo;s a little more complicated if you want to set this from a script, because the environment variables are replaced with the actual value BEFORE they are entered in the Registry.&lt;/p&gt;</description></item><item><title>Cross-Site Scripting Vulnerability in Citrix Web Interface</title><link>https://remkoweijnen.nl/blog/2010/12/09/cross-site-scripting-vulnerability-in-citrix-web-interface/</link><pubDate>Thu, 09 Dec 2010 09:40:59 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/12/09/cross-site-scripting-vulnerability-in-citrix-web-interface/</guid><description>&lt;p&gt;from &lt;a title="Cross-Site Scripting Vulnerability in Citrix Web Interface" href="http://support.citrix.com/article/CTX127541" target="_blank"&gt;CTX127541&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;A cross-site scripting vulnerability has been identified in specific versions of Citrix Web Interface.&lt;/p&gt;
&lt;p&gt;This vulnerability could potentially be used to execute malicious client-side script in the same context as legitimate content from the web server; if this vulnerability is used to execute script in the browser of an authenticated user then the script may be able to gain access to the authenticated user’s session or other potentially sensitive information.&lt;/p&gt;</description></item><item><title>Citrix Web Interface starts very slowly</title><link>https://remkoweijnen.nl/blog/2010/11/26/citrix-web-interface-starts-very-slowly/</link><pubDate>Fri, 26 Nov 2010 15:07:45 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/11/26/citrix-web-interface-starts-very-slowly/</guid><description>&lt;p&gt;I remembered from a previous project that when the Citrix Web Interface this is caused by a setting called &lt;em&gt;generatePublisherEvidence&lt;/em&gt; in the Aspnet.config file.&lt;/p&gt;
&lt;p&gt;This behaviour has been documented by Citrix in &lt;a title="Web Interface 5.x Delay on First Page" href="http://support.citrix.com/article/ctx117273" target="_blank"&gt;CTX117273&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you read it carefully you will see the note that you need to fix it in 2 places for an x64 system.&lt;/p&gt;</description></item><item><title>Citrix and Java JRE Versions</title><link>https://remkoweijnen.nl/blog/2010/11/15/citrix-and-java-jre-versions/</link><pubDate>Mon, 15 Nov 2010 22:41:33 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/11/15/citrix-and-java-jre-versions/</guid><description>&lt;p&gt;If you have ever installed Citrix Presentation Server/XenApp or one of the management consoles then you have probably dealt with Java versions.&lt;/p&gt;
&lt;p&gt;Citrix is very picky about the Java version so it&amp;rsquo;s usually best to initially install the Jre version that is delivered with the product.&lt;/p&gt;
&lt;p&gt;In my case however I needed to install the CMC for Xenapp 5 on Windows 2003, it requires JRE 5.0 Update 9 but this version was undesirable.&lt;/p&gt;
&lt;p&gt;So I tried to install the CMC with the current JRE version (1.6.0_22 at this time) but it makes the Installer exit immediately:&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2010/11/cmcjreerror.webp" alt="CMCJreError" width="416" height="216" /&gt;</description></item><item><title>Removing Single Sign on Node from the Delivery Services Console</title><link>https://remkoweijnen.nl/blog/2010/11/12/removing-single-sign-on-node-from-the-delivery-services-console/</link><pubDate>Fri, 12 Nov 2010 15:51:53 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/11/12/removing-single-sign-on-node-from-the-delivery-services-console/</guid><description>&lt;p&gt;When installing the Citrix Delivery Services Console with an unattended install (using CtxInstall.exe) the Citrix Password Manager gets automatically installed as well.&lt;/p&gt;
&lt;p&gt;You can see this in the Console where you will get an additional node called "Single Sign On".&lt;/p&gt;</description></item><item><title>The case of the missing XenApp Node in the Delivery Services Console</title><link>https://remkoweijnen.nl/blog/2010/11/12/the-case-of-the-missing-xenapp-node-in-the-delivery-services-console/</link><pubDate>Fri, 12 Nov 2010 12:37:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/11/12/the-case-of-the-missing-xenapp-node-in-the-delivery-services-console/</guid><description>&lt;p&gt;After having successfully tested the Unattended install jobs for my Citrix XenApp 5 environment I went on to testing the install.&lt;/p&gt;
&lt;p&gt;The install itsself and the msi logs that my jobs created all indicated that the install was successfull.&lt;/p&gt;
&lt;p&gt;So I went on and launched the install jop for the Delivery Services Console. This job succeeded nicely but when I opened the console the XenApp node was missing:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2010/11/xenapp.webp" class="glightbox" data-type="image" data-gallery="post-759"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2010/11/xenapp-small.webp" alt="XenApp" width="430" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The resolution is described in &lt;a title="Presentation Server or XenApp Nodes are Missing in the Access Management Console or Delivery Services Console" href="http://support.citrix.com/article/CTX125827" target="_blank"&gt;CTX125827&lt;/a&gt; but Resolution 2 is a lot of manual labour :-(&lt;/p&gt;
&lt;p&gt;So what do we do? We script it!&lt;/p&gt;</description></item><item><title>Automatically Accept Shadow Request</title><link>https://remkoweijnen.nl/blog/2010/10/22/automatically-accept-shadow-request/</link><pubDate>Fri, 22 Oct 2010 17:04:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/10/22/automatically-accept-shadow-request/</guid><description>&lt;p&gt;When you request Shadow (Remote Control) of a Remote Desktop (Terminal Server) or Citrix session the user gets a Dialog where he can Accept or Deny the Shadow Request.&lt;/p&gt;
&lt;p&gt;It looks something like this:&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2010/10/shadowrequest.webp" alt="ShadowRequest" width="396" height="152" /&gt;
&lt;p&gt;It&amp;rsquo;s possible to change the default settings and remove the need for this permission but I think this is a bad idea since it violates the user&amp;rsquo;s privacy.&lt;/p&gt;
&lt;p&gt;But sometimes it would be convenient to automatically accept, for instance for when a user is away or when you want to shadow a session that is &amp;ldquo;yours&amp;rdquo; but runs under another account.&lt;/p&gt;
&lt;p&gt;I wrote a tool to do just that :D&lt;/p&gt;</description></item><item><title>Detecting a Citrix Published Application</title><link>https://remkoweijnen.nl/blog/2010/07/05/detecting-a-citrix-published-application/</link><pubDate>Mon, 05 Jul 2010 21:48:28 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/07/05/detecting-a-citrix-published-application/</guid><description>&lt;p&gt;While browsing through my old projects folder I found a little commandline tool that I wrote about a year ago. I needed to detect a certain published application on a Citrix environment in the loginscript.&lt;/p&gt;
&lt;p&gt;The tool detect the current Citrix published applicationname or if you are running Terminal Server aka Remote Desktop Services the Initial Program name and stores this in an environment variable (APPNAME).&lt;/p&gt;</description></item><item><title>Citrix Workspace Control not working on HP t5540</title><link>https://remkoweijnen.nl/blog/2009/12/03/citrix-workspace-control-not-working-on-hp-t5540/</link><pubDate>Thu, 03 Dec 2009 09:33:58 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/12/03/citrix-workspace-control-not-working-on-hp-t5540/</guid><description>&lt;p&gt;Yesterday I was troubleshooting why Workspace Control was not available on an HP t5540 (Windows CE) Thin Client. This was a Citrix Xenapp 5 environment on Server 2008. When logging in through the Web Interface from the Thin Client's browser we noticed two things: Client Detection failed and the Reconnect and Disconnect buttons were not available: &lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/12/nobuttons.webp" class="glightbox" data-type="image" data-gallery="post-497"&gt;&lt;img loading="lazy" decoding="async" alt="NoButtons" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/12/nobuttons-small.webp" width="430" height="70" /&gt;&lt;/a&gt; I looked into the files in the webinterface folder (&lt;em&gt;wwwroot/Citrix/XenApp&lt;/em&gt;)and searched for workplace and reconnect. I determined that the Client Detection is done in the &lt;strong&gt;nativeClientDetect.js&lt;/strong&gt; (&lt;em&gt;app_data/clientDetection/clientscripts&lt;/em&gt;). But what I saw was very strange:&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;span class="codelang"&gt;text&lt;/span&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".txt" href="data:text/plain;charset=utf-8;base64,Ly8gRGV0ZWN0IHdoZXRoZXIgSUNBIENsaWVudCBpcyBhdmFpbGFibGUuCjwlCmlmICgoc0NsaWVudEluZm8ub3NXaW5DRSgpICYmIHNDbGllbnRJbmZvLmlzSUUoKSkgIHx8IHNDbGllbnRJbmZvLm9zU3ltYmlhbigpICkgewolPgogICAgICAgIC8vIEl0IGlzIGRpZmZpY3VsdCB0byByZWxpYWJseSBkZXRlY3QgcHJvY2Vzc29yIHR5cGUgZm9yIFdpbkNFIGFuZCBTeW1iaWFuIERldmljZXMKICAgIC8vIGFuZCB0aGVyZWZvcmUgdG8gY2hvb3NlIHRoZSByaWdodCBmbGF2b3VyIG9mIHRoZSBJQ0EgY2xpZW50LgogICAgLy8gQWxzbywgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHNpbXBseSBkb3dubG9hZCBhbmQgaW5zdGFsbCBJQ0EgY2xpZW50IGZvciBzb21lIG9mIHRoZXNlIGRldmljZXMsCiAgICAvLyBlLmcuIFdCVHMuIFRoZXJlZm9yZSwgd2UgYXNzdW1lIHRoYXQgSUNBIGNsaWVudCBpcyBhbHdheXMgYXZhaWxhYmxlLgoKICAgIGZ1bmN0aW9uIGRldGVjdE5hdGl2ZUNsaWVudCgpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;// Detect whether ICA Client is available.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;%
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;if ((sClientInfo.osWinCE() &amp;amp;&amp;amp; sClientInfo.isIE()) || sClientInfo.osSymbian() ) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // It is difficult to reliably detect processor type for WinCE and Symbian Devices
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // and therefore to choose the right flavour of the ICA client.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // Also, it is not possible to simply download and install ICA client for some of these devices,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; // e.g. WBTs. Therefore, we assume that ICA client is always available.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; function detectNativeClient() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return true;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Removing the Uninstall or change a program button from the Explorer Command Bar</title><link>https://remkoweijnen.nl/blog/2009/11/25/removing-the-uninstall-or-change-a-program-button-from-the-explorer-command-bar/</link><pubDate>Wed, 25 Nov 2009 10:52:13 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/11/25/removing-the-uninstall-or-change-a-program-button-from-the-explorer-command-bar/</guid><description>&lt;p&gt;Windows Vista introduced the Command Bar in Explorer which is sometimes also referred to as the Folder Band or the Task Band. The Command Bar is of course also present in Windows 7 and Server 2008 (R2).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/commandbar.webp" class="glightbox" data-type="image" data-gallery="post-477"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/commandbar-small.webp" alt="CommandBar" width="430" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This Command Bar shows possible tasks or actions depending on the active folder. I wanted to remove the &amp;ldquo;Uninstall or change a program&amp;rdquo; (in Dutch this is called &amp;ldquo;Een programma verwijderen of wijzigen&amp;rdquo;) button from the Computer view:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/commandbarbutton.webp" class="glightbox" data-type="image" data-gallery="post-477"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/commandbarbutton-small.webp" alt="CommandBarButton" width="430" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Unattended Install of the Citrix Xenapp WebInterface 5.2</title><link>https://remkoweijnen.nl/blog/2009/11/17/unattended-install-of-the-citrix-xenapp-webinterface-5-2/</link><pubDate>Tue, 17 Nov 2009 08:55:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/11/17/unattended-install-of-the-citrix-xenapp-webinterface-5-2/</guid><description>&lt;p&gt;I noticed that XenApp 5 Feature Pack comes with a new version of the Web Interface (5.2) (it is also available as standalone download). The parameters to install it in silent mode have changed but there&amp;rsquo;s no documentation at all on the Citrix Site:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/widocs.webp" class="glightbox" data-type="image" data-gallery="post-461"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/widocs-small.webp" alt="WIDocs" width="430" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Adding a Printer Connection with an alternative driver</title><link>https://remkoweijnen.nl/blog/2009/11/16/adding-a-printer-connection-with-an-alternative-driver/</link><pubDate>Mon, 16 Nov 2009 10:59:13 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/11/16/adding-a-printer-connection-with-an-alternative-driver/</guid><description>&lt;p&gt;I needed to add a printer connection to a Citrix server but the problem was that this printer had a buggy driver. I wanted to use an alternative driver such as the Citrx Universal Printer driver but on Terminal Server you might want to use the Terminal Services Easy Print driver.&lt;/p&gt;
&lt;p&gt;So I decided to make something that could be used in both situations, the result is a small commandline tool called AddPrinter2 (sorry I am not good in finding original names).&lt;/p&gt;
&lt;p&gt;It takes 2 parameters: the printername as unc path and the driver name. An example would be:&lt;/p&gt;
&lt;p&gt;AddPrinter2 &amp;ldquo;\server\printer&amp;rdquo; &amp;ldquo;Citrix Universal Printer&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Slow Installation because of Certificate Checks</title><link>https://remkoweijnen.nl/blog/2009/11/06/slow-installation-because-of-certificate-checks/</link><pubDate>Fri, 06 Nov 2009 21:29:15 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/11/06/slow-installation-because-of-certificate-checks/</guid><description>&lt;p&gt;A few days ago I noticed that an unattended installation of Citrix XenApp 5 was installing very slowly. When I looked at the various jobs and their installation time in the (Altiris) Deployment Server I saw that it was the Citrix Access Management Console that took almost 45 minutes to install:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/aminstallation.webp" class="glightbox" data-type="image" data-gallery="post-432"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/aminstallation-small.webp" alt="AMInstallation" width="430" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It was clear that this wasn&amp;rsquo;t normal since the install job is taking installing OS components like IIS and all subcomponents, activating Application Server and reboot in around 9 minutes. The installation of Citrix XenApp itsself takes only 14 minutes.&lt;/p&gt;
&lt;p&gt;I searched with Google and one of the first links was this knowledge base article from Citrix: &lt;a href="http://support.citrix.com/article/CTX120429" target="_blank"&gt;Slow Access Management Console Installation on XenApp 5.0&lt;/a&gt;. The article clearly describes that the delay is occurred by failing checks for Publisher&amp;rsquo;s and Server Certificate Revocation (because there&amp;rsquo;s no Internet Connection) and suggests to turn these checks off. Indeed my servers do not have a direct internet connection so the cause and solution were clear.&lt;/p&gt;
&lt;p&gt;And actually I had seen similar issues before in other (non Citrix) installations, some examples are Exchange 2007 (&lt;a href="http://support.microsoft.com/kb/944752" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://msexchangeteam.com/archive/2008/07/08/449159.aspx" target="_blank"&gt;here&lt;/a&gt;) and SQL Server 2008 (the SQL Installer actually checks if there&amp;rsquo;s an internet connection in the prerequisites check).&lt;/p&gt;
&lt;p&gt;The suggested, manual way, of turning of these checks is to clear the following checkboxes in Internet Explorer&amp;rsquo;s advanced settings Dialog:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/iecertificaterevocation.webp" class="glightbox" data-type="image" data-gallery="post-432"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/11/iecertificaterevocation-small.webp" alt="IECertificateRevocation" width="430" height="536" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But since I had to do this on many servers I decided it would be better to do it with a little VBS script.&lt;/p&gt;</description></item><item><title>Windows Installer proxy information not correctly registered</title><link>https://remkoweijnen.nl/blog/2009/11/05/windows-installer-proxy-information-not-correctly-registered/</link><pubDate>Thu, 05 Nov 2009 22:11:06 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/11/05/windows-installer-proxy-information-not-correctly-registered/</guid><description>&lt;p&gt;I was deploying an unattended installation of Citrix XenApp 5.0 with Altiris Deployment Server. The installation consists of several prerequisites, the installation of XenApp and finally the Citrix Management Consoles.&lt;/p&gt;
&lt;p&gt;The installation is performed with a special account and not the Local System account because the install packages are located on the network.&lt;/p&gt;
&lt;p&gt;When testing the deployment on a Windows Server 2008 I noticed that sometimes MSI based installations would fail with error code 1603 or 1601.&lt;/p&gt;</description></item><item><title>Delegated Management Console</title><link>https://remkoweijnen.nl/blog/2009/06/12/delegated-management-console/</link><pubDate>Fri, 12 Jun 2009 21:40:20 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/06/12/delegated-management-console/</guid><description>&lt;p&gt;In this topic I just want to show(case) you something I created in the past. It is a management console that enables delegated management in a Terminal Server or Citrix environment.&lt;/p&gt;
&lt;p&gt;The console is launched by a small executable that check credentials (based on group membership) and then launches an RDP session with the actual console in it. The logic behind it is that the RDP session runs with an account with delegated permissions in Active Directory and the actual user account that logs in here doesn&amp;rsquo;t have any permissions at all.&lt;/p&gt;
&lt;p&gt;This is the login screen:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/06/login.webp" class="glightbox" data-type="image" data-gallery="post-368"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/06/login-small.webp" alt="login" height="200" width="215" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve passed the login screen you enter the Main Console which consists of a Treeview on the left with possible options and a work area on the right:&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/06/mainscreen.webp" alt="mainscreen" height="301" width="430" /&gt;</description></item><item><title>Citrix Desktop Switcher</title><link>https://remkoweijnen.nl/blog/2009/06/12/citrix-desktop-switcher/</link><pubDate>Fri, 12 Jun 2009 12:40:09 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/06/12/citrix-desktop-switcher/</guid><description>&lt;p&gt;A while ago I wrote a small tool to assist in switching between a Full Screen Citrix Desktop and the local desktop. By default the Citrix client can switch from full screen to windowed mode (with the SHIFT F2 hotkey) but it doesn&amp;rsquo;t minimize the window automatically. So this always requires manually minimizing, do your local work, give focus to the Citrix client again and press the hotkey again to return to full screen.&lt;/p&gt;
&lt;p&gt;My idea was really simply: we write a little exe that runs locally and registers the SHIFT F2 hotkey. When the Hotkey is pressed we determine if we are in full screen or in windowed mode and reverse that. When going from Full Screen to Windowed we minimize the Citrix Client and notify the user (by balloon tip) that he is on the local desktop. I called it the Citrix Desktop Switcher (sorry I couldn&amp;rsquo;t come up with a more original name)&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s see it in action!&lt;/p&gt;
&lt;p&gt;When you start the Citrix Desktop Switcher you are notified that the tool is running (it doesn&amp;rsquo;t matter when you start the Switcher, you can start if even if the Citrix Session is already running).&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/06/balloon1.webp" alt="Balloon1" height="92" width="221" /&gt;</description></item><item><title>Modifying Microsoft Updates and/or hotfixes</title><link>https://remkoweijnen.nl/blog/2009/05/12/modifying-microsoft-updates-andor-hotfixes/</link><pubDate>Tue, 12 May 2009 13:53:34 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/05/12/modifying-microsoft-updates-andor-hotfixes/</guid><description>&lt;p&gt;As you might know Microsoft distributes updates and hotfixes with in installer, update.exe. When you run update.exe it looks into the supplied .inf files to see what it has to install. It&amp;rsquo;s not possible to make changes to the inf files however because that will invalidate it&amp;rsquo;s signature (and update.exe checks the signature that is stored in an accompanying .cat file).&lt;/p&gt;
&lt;p&gt;In my case I wanted to deploy the &lt;a href="http://www.microsoft.com/Downloads/details.aspx?familyid=F29D348A-78F9-47AD-92EB-632F9621BC84&amp;amp;displaylang=en" target="_blank"&gt;MUI pack for Internet Explorer 7&lt;/a&gt; to be able to support multiple languages. By default this pack installs 35 (!) languages and I wanted to install only Dutch language on top of existing English.&lt;/p&gt;</description></item><item><title>Unable to get System PTE individual lock consumer information error when using !sysptes 4 in WinDbg</title><link>https://remkoweijnen.nl/blog/2009/04/16/unable-to-get-system-pte-individual-lock-consumer-information-error-when-using-sysptes-4-in-windbg/</link><pubDate>Thu, 16 Apr 2009 16:07:07 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/04/16/unable-to-get-system-pte-individual-lock-consumer-information-error-when-using-sysptes-4-in-windbg/</guid><description>&lt;p&gt;A few days ago I was troubleshooting some strange problems on a Citrix Server. After some investigation (I will write about that later) it was clear to me that there was a shortage of System Page Table Entries (PTE&amp;rsquo;s). Using perfmon you can see how many free System PTE&amp;rsquo;s are available:&lt;/p&gt;
&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/04/perfcounter.webp" alt="perfcounter" height="212" width="215" /&gt;
&lt;p&gt;Any value below 5000 is not good, values below 2000 are critical. In my case it wasn&amp;rsquo;t possible to view processes with Task Manager anymore.&lt;/p&gt;
&lt;p&gt;Next I used WinDbg and attached to the Kernel (you can do that with File | Kernel Debug | Local | OK) and issued the !vm command:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/04/windbg.webp" class="glightbox" data-type="image" data-gallery="post-341"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/04/windbg-small.webp" alt="WinDbg" height="342" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;WinDbg shows us a warning that a lot of PTE allocations have failed, we can also see that there&amp;rsquo;s enough Paged Pool and Non Paged Pool available.&lt;/p&gt;
&lt;p&gt;So how do we find the guilty driver (usually it&amp;rsquo;s a driver)?&lt;/p&gt;</description></item><item><title>Sending Ctrl-Alt-Del / Simulate SAS in Windows Vista</title><link>https://remkoweijnen.nl/blog/2009/03/30/sending-ctrl-alt-del-simulate-sas-in-windows-vista/</link><pubDate>Mon, 30 Mar 2009 21:51:48 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/03/30/sending-ctrl-alt-del-simulate-sas-in-windows-vista/</guid><description>&lt;p&gt;Existing &lt;a href="https://remkoweijnen.nl/blog/2008/12/13/locking-a-workstation-part-1/"&gt;code&lt;/a&gt; to simulate the Secure Attention Sequence (SAS),which most people refer to as control alt delete or ctrl-alt-del, no longer works in Windows Vista. It seems that Microsoft offers a library that exports a function called SimulateSAS(). It is not public and one is supposed to request it by sending a mail to &lt;a href="mailto:saslib@microsoft.com"&gt;&lt;a href="mailto:saslib@microsoft.com"&gt;saslib@microsoft.com&lt;/a&gt;&lt;/a&gt;. Mails to this address remain unanswered though.&lt;/p&gt;</description></item><item><title>TSAdminEx Features Part 3</title><link>https://remkoweijnen.nl/blog/2009/02/25/tsadminex-features-part-3/</link><pubDate>Wed, 25 Feb 2009 13:08:31 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/02/25/tsadminex-features-part-3/</guid><description>&lt;table border="0" cellpadding="3" cellspacing="3" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://remkoweijnen.nl/blog/2009/02/20/tsadminex-beta-release/"&gt;Beta Release&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://remkoweijnen.nl/blog/2009/02/23/tsadminex-features-part-1/"&gt;Part 1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://remkoweijnen.nl/blog/2009/02/24/tsadminex-features-part-2/"&gt;Part 2&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
This is part 3 of the TSAdminEx Features series. Today I will discuss the Process View. As usual we will start by comparing TSAdmin to TSAdminEx again. So let's look at TSAdmin Process View:
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminprocess.webp" class="glightbox" data-type="image" data-gallery="post-320"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminprocess-small.webp" alt="TSAdminProcess" height="279" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the one from TSAdminEx:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminexprocessview.webp" class="glightbox" data-type="image" data-gallery="post-320"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminexprocessview-small.webp" alt="TSAdminExProcessView" height="182" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>TSAdminEx Features Part 2</title><link>https://remkoweijnen.nl/blog/2009/02/24/tsadminex-features-part-2/</link><pubDate>Tue, 24 Feb 2009 10:17:07 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/02/24/tsadminex-features-part-2/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/2009/02/23/tsadminex-features-part-1"&gt;Part1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now that a &lt;a href="https://remkoweijnen.nl/blog/2009/02/20/tsadminex-beta-release/"&gt;TSAdminEx beta is ready&lt;/a&gt; I will be showing you some features. In this part I will show the Sessions View.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start again with a compare of TSAdmin and TSAdminEx:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminsessionview.webp" class="glightbox" data-type="image" data-gallery="post-290"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminsessionview-small.webp" alt="TSAdminSessionView" height="177" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminexsessionview.webp" class="glightbox" data-type="image" data-gallery="post-290"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminexsessionview-small.webp" alt="TSAdminExSessionView" height="135" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see TSAdminEx shows more details, it shows the following extra columns:&lt;/p&gt;</description></item><item><title>TSAdminEx Features Part 1</title><link>https://remkoweijnen.nl/blog/2009/02/23/tsadminex-features-part-1/</link><pubDate>Mon, 23 Feb 2009 16:18:28 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/02/23/tsadminex-features-part-1/</guid><description>&lt;p align="right"&gt;&lt;a href="https://remkoweijnen.nl/blog/2009/02/24/tsadminex-features-part-2/"&gt;Part 2&lt;/a&gt;&lt;/p&gt;
Now that a &lt;a href="https://remkoweijnen.nl/blog/2009/02/20/tsadminex-beta-release/" target="_blank"&gt;TSAdminEx beta is ready&lt;/a&gt; I will be showing you some features. In this part 1 I will be comparing the Users view to TSAdmin.
&lt;p&gt;Let&amp;rsquo;s start TSAdmin, this tool is present by default on Windows 2003. If you use Windows XP or Windows Vista you can get it by installing the &lt;a href="http://www.petri.co.il/download_windows_2003_r2_adminpak.htm" target="_blank"&gt;Administration Pack&lt;/a&gt;. Please note that TSAdmin does not work on Vista RTM due to a &lt;a href="https://remkoweijnen.nl/blog/2007/12/19/why-tsadmin-crashes-on-windows-vista/" target="_blank"&gt;bug&lt;/a&gt; that was &lt;a href="https://remkoweijnen.nl/blog/2008/03/02/vista-sp1-changes-to-terminal-server-api/" target="_blank"&gt;corrected in Vista SP1&lt;/a&gt; (TSAdminEx works fine on both RTM as well as SP1)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadmin1.webp" class="glightbox" data-type="image" data-gallery="post-264"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadmin1-small.webp" alt="TSAdmin1" height="159" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s open TSAdminEx and start comparing&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminex1.webp" class="glightbox" data-type="image" data-gallery="post-264"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2009/02/tsadminex1-small.webp" alt="TSAdminEx1" height="156" width="430" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>TSAdminEx Beta release</title><link>https://remkoweijnen.nl/blog/2009/02/20/tsadminex-beta-release/</link><pubDate>Fri, 20 Feb 2009 17:59:06 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/02/20/tsadminex-beta-release/</guid><description>&lt;p&gt;Over the last months I have been working hard on TSAdminEx and now, finally, I can now present a first beta release.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t know what TSAdminEx is let me briefly introduce it. TSAdminEx is a tool that combines functionality of several existing tools: it has the power of task manager combined with the details of Process Explorer and the Terminal Server support of TSAdmin. On top of that it fully supports remote systems out of the box without installing any agents or services. It also has some unique features that neither of the mentioned tools can do!&lt;/p&gt;
&lt;p&gt;Several new features have been implemented since the &lt;a href="https://remkoweijnen.nl/blog/2008/01/27/test-2/" target="_blank"&gt;last time I talked about TSAdminEx&lt;/a&gt; and I will show you the most exciting ones here:&lt;/p&gt;</description></item><item><title>Globally disable Flash Player autoupdate</title><link>https://remkoweijnen.nl/blog/2008/12/19/globally-disable-flash-player-autoupdate/</link><pubDate>Fri, 19 Dec 2008 09:06:16 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/12/19/globally-disable-flash-player-autoupdate/</guid><description>&lt;p&gt;On a Citrix or Terminal Server you will want to disable autoupdate notifications of the flash player.&lt;/p&gt;
&lt;p&gt;This can be done by creating a file mm.cfg in the folder where the flash ActiveX control is installed (normally C:\Windows\System32\Macromed\Flash).&lt;/p&gt;
&lt;p&gt;Place the following line in this file (with a text editor like Notepad):&lt;/p&gt;</description></item><item><title>Applications tab in taskmanager is empty #2</title><link>https://remkoweijnen.nl/blog/2008/09/02/applications-tab-in-taskmanager-is-empty-2/</link><pubDate>Tue, 02 Sep 2008 09:05:25 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/09/02/applications-tab-in-taskmanager-is-empty-2/</guid><description>&lt;p&gt;As a followup to the previous &lt;a href="https://remkoweijnen.nl/blog/2008/09/01/applications-tab-in-taskmanager-is-empty/"&gt;article&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;It might be better to just Exclude taskmanager because settings the Flag value to 0 might disable multi monitor support. To do this Create a new REG_SZ (string) under HKEY_LOCAL_MACHINE\Software\Citrix\CtxHook\AppInit_Dlls\Multiple Monitor Hook and name it Exclude. It's value should be taskmgr.exe (case sensitive!).&lt;/p&gt;</description></item><item><title>Applications tab in taskmanager is empty</title><link>https://remkoweijnen.nl/blog/2008/09/01/applications-tab-in-taskmanager-is-empty/</link><pubDate>Mon, 01 Sep 2008 16:46:21 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/09/01/applications-tab-in-taskmanager-is-empty/</guid><description>&lt;p&gt;Today I noticed something strange: on a Citrix (Presentation Server 4.5) server taskmanager does not show anything in the applications tab.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" decoding="async" height="231" alt="taskmgr" src="https://remkoweijnen.nl/blog/wp-content/uploads/2008/09/taskmgr.webp" width="225" /&gt;&lt;/p&gt;
&lt;p&gt;I tested this on the other Citrix Servers in the farm and they all had the same problem (and non Citrix servers did not). As you might know taskmanager fills the applications tab by enumerating all top level windows. That's why I suspected Citrix because it places several hooks (multi monitor support, speedscreen etc.).&lt;/p&gt;</description></item><item><title>Unattended Citrix Installation: Could not Access the datastore using the DSN file</title><link>https://remkoweijnen.nl/blog/2008/06/23/error-26009-could-not-access-the-datastore-using-the-dsn-file/</link><pubDate>Mon, 23 Jun 2008 22:11:21 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/06/23/error-26009-could-not-access-the-datastore-using-the-dsn-file/</guid><description>&lt;p&gt;I was working on an unattended installation of Citrix Presentation Server 4.5 or rather Citrix Xenapp. I was creating the dsn file for the installation by a script that uses the echo command and output this to a file.&lt;/p&gt;
&lt;p&gt;This is a part of the script:&lt;/p&gt;</description></item><item><title>Terminal Server Ping Tool</title><link>https://remkoweijnen.nl/blog/2008/06/13/terminal-server-ping-tool/</link><pubDate>Fri, 13 Jun 2008 13:34:46 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/06/13/terminal-server-ping-tool/</guid><description>&lt;p&gt;A while ago I included a new undocumented API into my JwaWinsta unit which is called WinStationServerPing. This API &amp;ldquo;pings&amp;rdquo; a Terminal or Citrix server and verifies that Terminal Server is up and running. It is not the same as a regular networking ping! This API actually makes a connection to a (remote) Terminal Server and verifies that Terminal Server runs and accepts connections.&lt;/p&gt;
&lt;p&gt;I wrote a small cmdline tool that uses this API to ping a Terminal Server which can be used to quickly determine if a Terminal Server is up and running. I named it WTSPing.&lt;/p&gt;
&lt;p&gt;So how does it work? Open up a command prompt (Start -&amp;gt; Run -&amp;gt; cmd) and type WTSPing /? to see the help:&lt;/p&gt;</description></item><item><title>TSAdminEx Progress</title><link>https://remkoweijnen.nl/blog/2008/01/27/test-2/</link><pubDate>Sun, 27 Jan 2008 23:04:07 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/01/27/test-2/</guid><description>&lt;p&gt;I just wanted to show some of the progress that I made in development of TSAdminEx. I thought the best way would be to show some screenshots. Which reminds me I installed a nice Javascript to enlarge the thumbnails, click to see it&amp;hellip;&lt;/p&gt;</description></item><item><title>Using WTSWaitSystemEvent</title><link>https://remkoweijnen.nl/blog/2008/01/25/using-wtswaitsystemevent/</link><pubDate>Fri, 25 Jan 2008 18:02:13 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/01/25/using-wtswaitsystemevent/</guid><description>&lt;p&gt;If you develop an application for Terminal Server you might want to react on session events. This means that your application is notified when a user logs on, logs off or becomes idle. This can be done with the &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/aa383856(VS.85).aspx"&gt;WTSWaitSystemEvent&lt;/a&gt; function. Implementing it is rather simple and could look something like this:&lt;/p&gt;</description></item><item><title>Undocumented API's from Utildll</title><link>https://remkoweijnen.nl/blog/2007/12/09/undocumented-apis-from-utildll/</link><pubDate>Sun, 09 Dec 2007 11:05:04 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/12/09/undocumented-apis-from-utildll/</guid><description>&lt;p&gt;Several of Microsoft&amp;rsquo;s Terminal Server tools use undocumented API&amp;rsquo;s from Utildll.dll. For instance Terminal Server Admin uses it to get a localised connect state string and to format time strings like idle time, logon time etc.&lt;/p&gt;
&lt;p&gt;Functions below seems to be the most usefull ones, I will add those to the JwaWinsta unit:&lt;/p&gt;</description></item><item><title>Delphi and Terminal Server Aware</title><link>https://remkoweijnen.nl/blog/2007/11/24/delphi-and-terminal-server-aware/</link><pubDate>Sat, 24 Nov 2007 23:21:37 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/24/delphi-and-terminal-server-aware/</guid><description>&lt;p&gt;When an application is not Terminal Server aware (also known as a legacy application), Terminal Server makes certain modifications to the legacy application to make it work properly in a multiuser environment. For example, Terminal Server will create a virtual Windows folder, such that each user gets a Windows folder instead of getting the system&amp;rsquo;s Windows directory. This gives users access to their own INI files. In addition, Terminal Server makes some adjustments to the registry for a legacy application. These modifications slow the loading of the legacy application on Terminal Server and require up to 8 MegaBytes extra memory. This behaviour can be avoided if the TSAware flag is present in the PE header of an executable as can be read &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/microsoft.visualstudio.vcprojectengine.vclinkertool.terminalserveraware(VS.80).aspx"&gt;here&lt;/a&gt; at MSDN.&lt;/p&gt;</description></item><item><title>More undocumented Terminal Server API's</title><link>https://remkoweijnen.nl/blog/2007/11/09/more-undocumented-terminal-server-apis/</link><pubDate>Fri, 09 Nov 2007 22:42:58 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/09/more-undocumented-terminal-server-apis/</guid><description>&lt;p&gt;I added some more undocumented API&amp;rsquo;s to my Jwawinsta unit, the unit is now becoming a collection of the undocumented API&amp;rsquo;s in winsta.dll.&lt;/p&gt;
&lt;p&gt;These are the functions I added:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;WinStationDisconnect&lt;/li&gt;
	&lt;li&gt;WinStationGetProcessSid&lt;/li&gt;
	&lt;li&gt;CachedGetUserFromSid (exported by utildll.dll)&lt;/li&gt;
&lt;/ul&gt;
I also added some more parts of the undocumented structure returned by WinStationQueryInformationW, it now contains:
&lt;ul&gt;
	&lt;li&gt;Session State&lt;/li&gt;
	&lt;li&gt;WinStationName&lt;/li&gt;
	&lt;li&gt;SessionId&lt;/li&gt;
	&lt;li&gt;ConnectTime&lt;/li&gt;
	&lt;li&gt;DisconnectTime&lt;/li&gt;
	&lt;li&gt;LastInputTime&lt;/li&gt;
	&lt;li&gt;LogonTime&lt;/li&gt;
	&lt;li&gt;OutgoingFrames&lt;/li&gt;
	&lt;li&gt;OutgoingBytes&lt;/li&gt;
	&lt;li&gt;OutgoingCompressedBytes&lt;/li&gt;
	&lt;li&gt;IncomingCompressedBytes&lt;/li&gt;
	&lt;li&gt;IncomingFrames&lt;/li&gt;
	&lt;li&gt;IncomingBytes&lt;/li&gt;
	&lt;li&gt;Domain&lt;/li&gt;
	&lt;li&gt;Username&lt;/li&gt;
	&lt;li&gt;CurrentTime&lt;/li&gt;
&lt;/ul&gt;
&lt;section class="comments"&gt;
&lt;h2&gt;2 Comments&lt;/h2&gt;
&lt;ol class="comment-list"&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;Chris&lt;/span&gt; &lt;time datetime="2007-12-03"&gt;Dec 3, 2007&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;I would like know how it is possible to access WindowStation and Desktops from a service.&lt;br&gt;
CreateDesktop and similar only works for the current session of the process.&lt;br&gt;
I know there exists NTQueryObject and similar but they are hard to understand and only query kernel objects.&lt;br&gt;
However creating a desktop from a service into another session is a mystery.&lt;/p&gt;</description></item><item><title>Citrix Solutions Conference 2007</title><link>https://remkoweijnen.nl/blog/2007/11/08/citrix-solutions-conference-2007/</link><pubDate>Thu, 08 Nov 2007 15:01:24 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/08/citrix-solutions-conference-2007/</guid><description>&lt;p&gt;Yesterday I attended the Citrix Solutions Conference in Antwerp. Brad Pedersen (Chief Architect and Senior Fellow at  Citrix Systems) held an interesting speech about &lt;a target="_blank" href="http://www.citrix-eventservice.com/et/citrix/et/e/2007/01/1/m/be/agenda/popup/the_end_user_experience.html"&gt;The End User Experience&lt;/a&gt;. I liked especially liked the part about the history of Citrix and the early versions of their products like Wincredible and Winframe. Since Brad wrote the original code for Citrix and thus Terminal Server (the stuff that is in winsta.dll now) I hoped he could share some info with me on the undiscovered parts of winsta.dll. Unfortunately Brad could not do this because of a non disclosure agreement with Microsoft. He did tell me that Citrix is pushing Microsoft to make more Terminal Server API&amp;rsquo;s public. I presume that&amp;rsquo;s why Vista and Windows 2008 offer some new API&amp;rsquo;s which I wrote about &lt;a href="https://remkoweijnen.nl/blog/2007/10/30/new-terminal-server-apis-in-vista-sp1"&gt;earlier&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to launch a process in a Terminal Session #2</title><link>https://remkoweijnen.nl/blog/2007/11/08/how-to-launch-a-process-in-a-terminal-session-2/</link><pubDate>Thu, 08 Nov 2007 13:48:18 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/08/how-to-launch-a-process-in-a-terminal-session-2/</guid><description>&lt;p&gt;&lt;img width="48" height="48" loading="lazy" decoding="async" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2007/11/cmd.webp" alt="Command Prompt Icon" /&gt;A little while ago I wrote an article on launching a process in another Terminal Session (&lt;a href="https://remkoweijnen.nl/blog/2007/10/20/how-to-launch-a-process-in-a-terminal-session/"&gt;/2007/10/20/how-to-launch-a-process-in-a-terminal-session/&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The article didn&amp;rsquo;t have a demo app yet so I&amp;rsquo;ve attached it here.&lt;/p&gt;</description></item><item><title>RDP Clipboard Fix</title><link>https://remkoweijnen.nl/blog/2007/10/25/rdp-clipboard-fix/</link><pubDate>Thu, 25 Oct 2007 17:45:57 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/10/25/rdp-clipboard-fix/</guid><description>&lt;p&gt;Did you ever loose Clipboard functionality (copy/paste) while working with several Terminal Server sessions? I think everyone that works a lot with Terminal Server has experienced this from time to time.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s caused by badly behaving applications. Dimitry Vostokov wrote a tool to fix this issue for Citrix (RepairCBDChain.exe), he explains the issue very well on his blog:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Windows has a mechanism to notify applications about clipboard changes. An application interested in such notifications has to register itself in the so called clipboard chain. Windows inserts it on top of that chain and that application is responsible to propagate changes down the chain:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://citrite.org/blogs/dmitryv/files/2006/12/rc1.JPG"&gt;&lt;em&gt;&lt;img src="http://citrite.org/blogs/dmitryv/files/2006/12/rc1.thumbnail.JPG" alt="rc1.JPG" height="80" /&gt;&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If 3rd-party application forgets to forward notifications down then we have a broken clipboard chain and clipboard changes are not sent via ICA protocol:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Read more at Dimitry&amp;rsquo;s Blog: &lt;a href="http://citrite.org/blogs/dmitryv/2006/12/09/clipboard-issues-explained/"&gt;&lt;a href="http://citrite.org/blogs/dmitryv/2006/12/09/clipboard-issues-explained/"&gt;http://citrite.org/blogs/dmitryv/2006/12/09/clipboard-issues-explained/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So how can we fix this for Terminal Server then?&lt;/p&gt;</description></item></channel></rss>