Wednesday, December 19, 2012

Windows Security Update (KB2753842) Causes OTF Fonts To Disappear

Hello,

I recently came across an issue where clients where experiencing missing fonts when viewing a PowerPoint project in presentation .  They could view the fonts correctly in editing mode no problem at all but when they went to presentation mode, they just disappeared.

This problem doesn't happen when you're using TrueType Fonts at all, just OpenType Fonts and if you were to drop the font size down to 12 or below, the OTF fonts show correctly in presentation mode.

The CAUSE is a Windows Security Update which addressed some security holes with OTF files.  There a quite a few WSUS servers which are set to install Security Updates by default, so I recommend you decline this update asap but only for client platforms as it's not likely you'll be using a client side app on a server.

The RESOLUTION.  Well to remove the update in Add/Remove but in order to remove the update in a silent manor different commands are required for XP and Windows Vista/7 workstations.  I put together a simple batch script which you can push out via Group Policy or run manually to remove the update from client workstations.  SEE BELOW.

Note: Once you have removed the update, you will need to reboot the workstation for the change to take effect.  I set this to run as a shutdown script in GP.

Also note:  apparently it's not just effecting PowerPoint. A lot of other application are reported to have issues such as Corel Draw.  I would expect quite a few companies that use custom OTF fonts will see issues from this update.

Hope this removal script helps.

------------------------


@echo off

REM Removal of Security Update KB2753842 which causes OTF fonts to disappear in PowerPoint Presentations
REM Created by Ben Owens 14-12-2012

REM Check Windows Version
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_xp
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_7
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto ver_7
goto warn_and_exit

:ver_xp
"C:\WINDOWS\$NtUninstallKB2753842$\spuninst\spuninst.exe" /quiet /norestart
echo Windows XP
goto exit

:ver_7
wusa /uninstall /KB:2753842 /quiet /norestart
echo Windows 7

:exit

------------

Tuesday, December 18, 2012

Cubby - Storage sync

Hi

I had a problem...........I use dropbox, I have about 6GB space after referrals etc.  I love the product, the fact it is multi platform and integrates so tightly.  The problem is space.

Ok 6GB for free is great!  But my photos folder is 35GB and my music is around 32GB.  Sure I could cut these down in either quality or quantity, but I do not want to do that.

I have an Asus Laptop, a Shuttle server and a Mac Mini (as media center) at home and keeping files in sync between each other would be good with Dropbox, but I don't want to spend lots of money for something that is an elaborate version of robocopy.

Enter Cubby.  It is a tool currently in beta from LogMeIn.  The idea is pretty much identical to Dropbox but for a killer feature called DirectSync.

This allows online computers to directly sync with one another, rather than going via the cloud.  Perfect for my scenario and I would imagine lots of other people.  As you can see in the screenshot below, you create folders (called Cubbies) and choose if you want them to go via the Cloud.  As you can see I have chosen Off which means directsync is being used.

The thing is, although I am using the free version, they just emailed me to join in the Pro version for half price as I am a beta tester.  This gives you 100GB for $3.99 a month or about £30 a year in English money.  That is cheap and I am serious considering signing up.

If you have this problem get to https://www.cubby.com/

Tuesday, December 04, 2012

Wyse ThinsOS 7.1 resolutions

Hi there!

My company uses a large set of Wyse ThinOS terminals all the way from the old 1200LE to the new T10.

The T10 is a cracking piece of kit, dual monitor in a tiny form factor which can also handle Citrix HDX and boot in seconds....it is pretty neat.

For this reason we have been keen to replace some of the old 1200LEs and S10 devices with the T10.  Intially this was held up due to the session reliability issue I blogged about a while ago

http://www.teamas.co.uk/2012/06/wyse-thinos-71-session-disconnecting.html

This was fixed with hotfix 130 (7.1_130).

The latest problem we had was with custom resolutions.  We use a WNOS.ini file to configure the terminals with a fairly basic configuration.  This will tell the terminals to use the DDC to determine the best resolution of which the monitor and device can handle.

We then use a username.ini file when the user logs in, this will start the appropriate Citrix session for them.  This will also launch at the best resolution for them e.g. A user with poor sight could start a terminal which is using 1280x1024 resolution, when they logon the session size will then become 1024x768.

This works really well as the support team does not need to configure specific terminals and best of all the users settings follow them!

Now 7.1 of ThinOS firmware screwed this up with the introduction of the VDI toolbar zero launchpad.  When users tried to logon to these terminals the resolution would never follow the details in the username.ini file.

To troubleshoot I tried to make a new connection and you can see there is no option to specify a different resolution.


 You can see that only "Default" is specified

Now, if you change the interface to be in classic desktop by going to System Preferences > Remote Connections > Visual Experience.  This can be achieved in the ini file by entering command

sysmode=classic



When you press OK you will be prompted to restart the terminal.  At the point the OS will look similar to pre 7.1 ThinOS with the connect manager window appearing on the desktop.

Try to add a new connection and you will see a list of resolutions can now be specified!!





I suspect that VDI mode has been streamlined and changing resolution per connection is not by design.  It would be nice if Wyse had documented this "feature" or responded within the 2 months to the support call we had opened with them!!!

Thanks
Sam

Monday, October 22, 2012

Lync 2010 Mobility Autodiscover

Recently I have been configuring a Lync 2010 environment as a PoC for IM and presence for my company.

The PoC includes using IM and presence from the desktop and on mobile devices.  This requires an edge configuration and reverse proxy using TMG 2010.

I found the following blog post which is great for setting up mobility

http://blog.schertz.name/2011/12/deploying-the-lync-2010-mobility-service/

Everything was configured included DNS names, certificates, software install etc.etc.

Once I had everything configured I found that if I tried to connect using my iPad device it would provide the following error message.

Can't connect to the server. It may be busy or temporarily unavailable. Please try again

I looked at the logging and found that the Lyncdiscover URL wasn't being redirected to the configuration file required to login.

Browsing to https://lyncdiscover.companyname.com would simply produce a error 403 forbidden message.

I went to "more details" and turned auto config off and entered the following URL in the internal and external address

https://lyncdiscover.companyname.com/Autodiscover/AutodiscoverService.svc/root (replace companyname with your relevant address!)

When visiting the above URL in Internet Explorer it will download a configuration file which contains the data required to login.

With this configured the logon worked.  This was fine, but I didn't want to provide a massive URL for configuration and wanted autoconfiguration working correctly.

My next stop was IIS URL rewrite rules on the server.  These are configured to redirect users with anything with lyncdiscover in the HTTP_HOST header to be redirected to the config file above.  I checked the rules and found they were all sound.  Also browsing on the localhost didn't redirect so I ruled out the TMG 2010 server being at fault.

Finally I went to add/remove programs and found the following entry.


Clicking repair on this resolved the issue for me.

When visiting https://lyncdiscover.companyname.com I get the configuration file as if I were visiting https://lyncdiscover.companyname.com/Autodiscover/AutodiscoverService.svc/root

I hope this helps you!

Sam

Tuesday, October 02, 2012

Moving folders in XenApp console

Recently one of my colleagues Chris (chrisainger.com) tried to move a folder full of  XenApp 6.0 applications to a different location in the DSC (delivery services console) tree.  This seems like it should be pretty easy but actually it is not supported in the console.

When clicking and dragging a folder the cursor icon changes to inform you this is not possible.

 


Now moving the applications themselves works, but the not the folder containing them, sure you can move the applications one by one, but that will take a lot of time.

I had a quick look and found a XenApp powershell cmdlet for this.

Open powershell on a server where the XenApp SDK is installed (download from here http://community.citrix.com/display/xa/XenApp+6+PowerShell+SDK)

Add-pssnapin Citrix* (this will load the cmdlets)

Move-XAfolder sourcepath destinationpath

so if we wanted to move a folder called testing underneath a folder called testing you may use this line

Move-XAfolder testing applications

This also works for workergroups and servers although clearly you cannot move an application folder into the server section.

If you want more help type help Move-XAfolder -full in a powershell window.

Sam

Wednesday, August 22, 2012

PNA Removed from Citrix Receiver 3.3

Citrix are really trying to push StoreFront to their customers.  Since Citrix client 13 they have packaged the "plugin" into Citrix Receiver. 

Receiver is the framework in which plugins (Online, Offline (streamed), SSO (password manager) etc.) were managed by.  As users frequently just installed the Online Plugin it was confusing that the client needed for other operating systems was called Receiver.

Citrix decided to just go ahead and force users to use Receiver for Windows and make the Online Plugin a default addition thus making the naming consistent across the board.

This was ok on the whole, but since version 3.3 they have made a prompt which asks users for the URL for Citrix Storefront.  This does not accept a PNA web address and can be throughly confusing to users who are using a standard Web Interface to launch their applications!

The string provided in my earlier blog post still works to remove the receiver branding and popup, but it is not like end-users will install the software like this on their own PCs.

http://www.teamas.co.uk/2011/09/citrix-online-plugin-13.html

If you still want to use PNA you need to download a different version of receiver (receiver 3.3 Legacy PNA).  This can be found at the following website (MyCitrix login required)

https://www.citrix.com/English/SS/downloads/details.asp?downloadId=2327681&productId=1689163#top

If you do a basic install, it will not provide the old blue bubble in the system tray and will only show applications in the start menu.  To make it install like it did from the good old days use the installation string as follows

CitrixReceiverEnterprise.exe /silent ADDLOCAL="ICA_Client,SSON,USB,DesktopViewer,Flash,PN_Agent,Vd3d" ENABLE_SSON="Yes"

Friday, August 17, 2012

Updated Presence Application

In my last post I created a small powershell script which allowed users to see who was online by using information from the Citrix XenApp data collector.

I wanted to take this a little further to provide other information such as location etc.

The following form is the result.  It has been designed to be used by our support team rather than staff in general.



This shows the user status, the server which they are logged on to, their login time and their relative location.

It also has a Remote Assist button, this will launch remote assistance and show user sessions for that particular server.  Previously our support team had to either ask users which server they were logged on to, or find them in the DSC.  By using the presence form, it will speed up this process and give them other useful information as well.

The location is a tricky subject, to show this I had to add subnet IP addresses into the script.

Below is a copy of the script with some information edited or removed.  As stated in my previous post I am not a powershell guru and I am sure that some elements could be more streamlined.  If you have any comments then feel free to share them!


[system.reflection.assembly]::LoadWithPartialName( "System.Windows.Forms")
[system.reflection.assembly]::LoadWithPartialName("System.Drawing")
Function Location
{
    write-host "launching a function"
   
}
$form = New-Object Windows.Forms.Form
$form.text = "Presence"
$label = New-Object Windows.Forms.Label
$label.Location = New-Object Drawing.Point 50,30
$label.Size = New-Object Drawing.Point 200,15
$label.text = "Enter the users name below"
$statuslabel = New-Object Windows.Forms.Label
$statuslabel.Location = New-Object Drawing.Point 35,125
$statuslabel.Size = New-Object Drawing.Point 300,15
$statuslabel.visible = $False
$computerlabel = New-Object Windows.Forms.Label
$computerlabel.Location = New-Object Drawing.Point 35,160
$computerlabel.Size = New-Object Drawing.Point 300,15
$computerlabel.visible = $False
$Logintimelabel = New-Object Windows.Forms.Label
$logintimelabel.Location = New-Object Drawing.Point 35,195
$logintimelabel.Size = New-Object Drawing.Point 300,15
$logintimelabel.visible = $False
$locationlabel = New-Object Windows.Forms.Label
$locationlabel.Location = New-Object Drawing.Point 35,230
$locationlabel.Size = New-Object Drawing.Point 300,15
$locationlabel.visible = $False
$OfferRAbutton = New-Object Windows.Forms.Button
$OfferRAbutton.text = "Remote Assist"
$OfferRAbutton.Location = New-Object Drawing.Point 90,265
$OfferRAbutton.Size = New-Object Drawing.Point 100,30
$OfferRAbutton.visible = $False
$OfferRAbutton.Add_Click({C:\Windows\System32\msra.exe /offerRA $server})
$textfield = New-Object Windows.Forms.TextBox
$textfield.Location = New-Object Drawing.Point 50,60
$textfield.Size = New-Object Drawing.Point 200,30

$button = New-Object Windows.Forms.Button
$button.text = "Go!"
$button.Location = New-Object Drawing.Point 100,90
$button.Add_Click({
$locationlabel.visible = $False
$statuslabel.visible = $False
 $computerlabel.visible = $False
    $logintimelabel.visible = $False
if ( (Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue) -eq $null )
{Add-PsSnapin Quest.ActiveRoles.ADManagement}
if ( (Get-PSSnapin -Name Citrix* -ErrorAction SilentlyContinue) -eq $null )
{Add-PsSnapin Citrix*}
$accounts = @(get-qaduser $textfield.text)
$passedname = $textfield.text
If(!$accounts) {$Statuslabel.text = "$passedname cannot be found in the system"
   $statuslabel.visible = $True}
If($accounts){
$account = $accounts[0]
$session = Get-XASession -Account $account.ntaccountname -Full | Where {$_.State -ne "Disconnected" -and $_.BrowserName -eq "Desktop"} | sort-object AccountName
$iplocation = $session.ClientIPV4
$fullname = $account.name
$Server = $session.servername
$LoginTime = $session.logonTime
If(!$session){
$Statuslabel.text = "$fullname is not logged into My Desktop"
$statuslabel.visible = $True
                }
If($session){
switch -wildcard ($iplocation)
    {
    "192.168.0.*" {$txtlocation = "Site Ground Floor"}
    "192.168.1.*" {$txtlocation = "Site 1st Floor"}
    "192.168.2.*" {$txtlocation = "Site 2nd Floor"}
    "192.168.3.*" {$txtlocation = "Site 3rd Floor"}
    "192.168.4.*" {$txtlocation = "Site 4th Floor"}
    "172.20.8.*" {$txtlocation = "Site 2"}
    "172.20.9.*" {$txtlocation = "Site 3"}
    default {$txtlocation = "Location cannot be determined"}
    }
$lastinput = $session.LastInputTime
$currenttime =$session.CurrentTime
$idletime =($currenttime - $lastinput).Minutes
if ($idletime -lt 5) {
Location
$Status = "Online"
$Statuslabel.text = "$Fullname is $status"
$computerlabel.text = "Server name = $Server"
$logintimelabel.text = "Login Time = $LoginTime"
$locationlabel.text = "Location = $txtlocation"
    $locationlabel.visible = $True
    $statuslabel.visible = $True
    $computerlabel.visible = $True
    $logintimelabel.visible = $True
    $OfferRAbutton.visible = $True
                        }
                       
                       
Elseif ($idletime -gt 4) {
Location
$Status = "Away"
$Statuslabel.text = "$Fullname has been $status for $idletime minutes"
$computerlabel.text = "Server name = $Server"
$logintimelabel.text = "Login Time = $LoginTime"
$locationlabel.text = "Location = $txtlocation"
    $locationlabel.visible = $True
    $statuslabel.visible = $True
    $computerlabel.visible = $True
    $logintimelabel.visible = $True
    $OfferRAbutton.visible = $True
                            }
                }
               }
})
# Add the controls to the Form
$form.controls.add($button)
$form.controls.add($label)
$form.controls.add($StatusLabel)
$form.controls.add($textfield)
$form.controls.add($computerlabel)
$form.controls.add($Logintimelabel)
$form.controls.add($OfferRAbutton)
$form.controls.add($locationlabel)

# Display the dialog
$form.ShowDialog()

Tuesday, June 26, 2012

Presence Information from Citrix Sessions

I was investigating a quick method of getting user presence information for our contact centre to see who is available in the business.  We do not have any unified communications tools as yet (hopefully we may get lync at some point though!) and I thought there must be a quick way of achieving this.

My intial thought was creating a internal web server which acted like FourSquare, users could check in and out.  The problem is that it is useless if people do not use it.

I then thought that nearly all of this information is already available through the Delivery Services Console in XenApp (app center, presentation server console, citrix management console.....or whatever it will be called next!!).  You can browse for sessions and see who is logged in and who is idle.

The vast majority of people (over 90% of our users) login to the same published desktop which means 1 script will produce decent results.

I created a service account which was a custom administrator to the Citrix farm.  This would be used to get information using the Citrix XenApp Powershell cmdlets.

Initial Code

I decided to use the XenApp Powershell cmdlet Get-XAsession to get me this information.  This only produces a subset of data normally, but providing Get-XAsession -Full switch gives you all the data.  Running this against lots of sessions can be slow.

This -Full switch provides last input time.  This can be used to calculate if the user session is idle.  This can be incorporated into a script which checks if the users is online, offline or sessions over 5 minutes idle being classed as away from their desk.

Output

The next step was deciding the output of the data, I wanted to store everything in either a hashtable and then output to HTML, or dynamically write to HTML.  I found that doing this for 600+ sessions was far too slow and eventually made the status message incorrect.  If the query took 4 minutes, then idle users may not be idle any longer.

I then decided to cut down the script based on user input.  The user can enter a name, it can then be checked in the farm and produce 1 result.  Much quicker but more code involved.

This can be done in native powershell using read-host and write-host but I want something a little better on the eye.  2 options were open, HTA window or Windows Forms. 

GUI

HTA windows are HTML windows which can run vbscript or javascript to launch powershell.  When you build a fresh Windows 2003 server, a HTA window appears asking what you want to do next!  They are limited because passing data between the HTA window and the powershell requires output to clipboard or external file.  I dabbled in this but found the process quite buggy for my script.

Windows forms are .Net based and can easily incorporate input and output into powershell windows.  This is the way I decided to go.

Below is screenshot of the main screens.  The first screen is what greets users initially.


When typing in a username and pressing OK, the powershell cmdlets for Citrix and Quest AD tools are loaded, the text is passed to get-QADuser.  If nothing can be found by get-QADuser some text is passed back to the user.


If get-QADuser finds something, the first account is picked up and passed into Get-XAsession.  If nothing is found by Get-XAsession for this user, a message is posted stating the user is not online.


If a user session is found by Get-XAsession a calculation is done to work out the idle time, if it is less than 5 minutes a message is provided stating the user is online.


If the calculation works out the users has been idle for more than 5 minutes an away message is posted.  It will state the amount of minutes they have been away for as well.



Here is the powershell code I have used.


[system.reflection.assembly]::LoadWithPartialName( "System.Windows.Forms")
[system.reflection.assembly]::LoadWithPartialName("System.Drawing")


$form = New-Object Windows.Forms.Form

#window title
$form.text = "Presence"


#text label for user instruction
$label = New-Object Windows.Forms.Label
$label.Location = New-Object Drawing.Point 50,30
$label.Size = New-Object Drawing.Point 200,15
$label.text = "Enter the users name below"


#label used for output of script
$statuslabel = New-Object Windows.Forms.Label
$statuslabel.Location = New-Object Drawing.Point 35,125
$statuslabel.Size = New-Object Drawing.Point 300,15
$statuslabel.visible = $False


#textfield used to collect name from user
$textfield = New-Object Windows.Forms.TextBox
$textfield.Location = New-Object Drawing.Point 50,60
$textfield.Size = New-Object Drawing.Point 200,30


#go button to execute the script
$button = New-Object Windows.Forms.Button
$button.text = "Go!"
$button.Location = New-Object Drawing.Point 100,90
$button.Add_Click({
$statuslabel.visible = $False


if ( (Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue) -eq $null )
{Add-PsSnapin Quest.ActiveRoles.ADManagement}

if ( (Get-PSSnapin -Name Citrix* -ErrorAction SilentlyContinue) -eq $null )
{Add-PsSnapin Citrix*}

$accounts = @(get-qaduser $textfield.text)
$passedname = $textfield.text
If(!$accounts) {$Statuslabel.text = "$passedname cannot be found in the system"
   $statuslabel.visible = $True}

If($accounts){
$account = $accounts[0]
$session = Get-XASession -Account $account.ntaccountname -Full | Where {$_.State -ne "Disconnected" -and $_.BrowserName -eq "My Desktop"} | sort-object AccountName
$fullname = $account.name
If(!$session) {$Statuslabel.text = "$fullname is not online"
   $statuslabel.visible = $True}

If($session){
$lastinput = $session.LastInputTime
$currenttime =$session.CurrentTime
$idletime =($currenttime - $lastinput).Minutes

if ($idletime -lt 5) {$Status = "Online"
$Statuslabel.text = "$Fullname is $status"
    $statuslabel.visible = $True}
Elseif ($idletime -gt 4) {$Status = "Away"
$Statuslabel.text = "$Fullname has been $status for $idletime minutes"}
    $statuslabel.visible = $True

  }
}
})

$form.controls.add($button)
$form.controls.add($label)
$form.controls.add($StatusLabel)
$form.controls.add($textfield)


$form.ShowDialog()


Next Steps

I am looking at making the GUI look a bit nicer and adding other information such as location based on client IP address.  I am also looking at better ways of inputing names, maybe a dropdown list.  This could help trying to identify people with the same name.

I am not a powershell expert, so the code above may not be 100% optimal, feel free to suggest improvements or ask questions.

Thanks
Sam





Wednesday, June 20, 2012

Wyse ThinOS 7.1 session disconnecting

We utilise Wyse ThinOS terminals for users at my organisation.  They connect to a full published desktop based on XenApp 6.  The Wyse terminals have been really useful as they load very quickly and configuration is easy using INI file and DHCP flags.  This means we can ship a new unit out to site with zero configuration.  True plug and play in action!!!

We have started to purchase some newer terminals recently including the R10 and T10.  The R10 is a little older and originally came with 7.0 firmware.  The T10 is a newer terminal which is the replacement for C10 and S10 terminals.  It has a small form factor and can handle multi monitors very well indeed.

The T10 ships with firmware version 7.1.  We have found this to be very problematic in our environment.  Users would start their desktops and get disconnected at random points in the day.  We downgraded any R10s with 7.1 firmware back 7.0 and it fixed the issue.  Unfortunately you cannot downgrade the T10!!

To reproduce this problem I would watch the following video file from Gizmodo

http://gizmodo.com/5743871/the-most-beautiful-short-film-about-cryptography-youll-see-today

After about 30-60 seconds the session would disconnect.  Our terminals are configured to shutdown on session end, which means the user would have to boot the terminal again. 

If the terminal is not configured for auto shutdown the following error would appear in the system information tab.

ICA: read error 0 from ica_frame_recv

We opened a support case with Wyse and they informed us that this issue had something to do with session reliability.  To workaround the issue you can disable session reliability in the wnos.ini file

CONNECT=ICA \
BrowserIP=Server1,Server2 \
Application="AppName" \
Description="AppDesc" \
Icon=icon.JPG \
AutoConnect=Yes \
Username=$UN \
Password=$PW \
Domainname=domain \
Encryption=128 \
Resolution=DDC \
Fullscreen=yes \
HTTPBrowsing=yes \
SessionReliability=no \
Mapdisks=yes \
MapdisksUnderZ=yes \
LowBand=no \
UniSession=yes \
LocalCopy=no

This had an immediate impact.  The testing showed no disconnects, but we like session reliability.  If a network link goes down for 10 seconds we do not want all users being disconnected!

Wyse have provided me with a limited release hotfix (7.1._126.01) which resolves the issues without needing to turn off session reliability.  This will be included in WTOS 08 which is due for release in Q4 2012.

Thanks
Sam

Thursday, March 15, 2012

XenApp License Acquisition Error (-25)

We recently experienced a Citrix XenApp error when migrating our users over to the new farm. 

This is documented in the following KB article

http://support.citrix.com/article/CTX124790

This stopped any new users connecting the desktop.

Our licence server had 1 file installed with 7 licences are various amounts purchased through the years.  Some of these were originally owned by different organisations hence the split.

We found that only 1 licence was valid for SA (subscription advantage) in the licence console.  When concurrent connections for this licence were full, no more connections were allowed.

We proved that all our licences had valid SA in the MyCitrix.  We tried to reallocate the licences as suggested in step 3 of the above ctx article

Verify the "SA Date" column is equal to or greater than 2010.0317.
If the SA date is prior to 2010.0317, you must allocate new Subscription Advantage Renewal licenses from MyCitrix.com and install them on your license server, or obtain a new EVAL or NFR license from Citrix.

FIX
===============

The resolve the issue, you must first RETURN all of the licences.  After they have been returned, you can allocate the licence and the SA date will now be correct.

I wish Citrix would have created some more detailed instructions for this particular step, but documentation in this area seems next to impossible.

I hope this helps

Sam

Monday, February 20, 2012

Wyse ThinOS 7.1 Xenapp USB not mapping

Hi there

Wyse have recently released the 7.1 version of their ThinOS firmware.  When testing this in our environment it broke USB mapping from our Wyse terminals for Citrix XenApp 6.0.

Normally USB drives are mapped under the Z drive. 

We found that since 7.1 Wyse are now classing the USB drive as a removable drive, Makes sense right?

Previously they classed this as a Floppy Drive, our Citrix Policies allowed Floppy drives for a select few users and we disabled removable drives.  As soon as we allow removable drives all starting working fine.

Thanks
Sam

Thursday, February 16, 2012

Windows 2008 R2 shared files do not automatically show

We found a really annoying issue when implementing our new XenApp 6 desktop.  Users were saving files onto the desktop, but they would not appear until they pressed F5. 

The users desktop is redirected to their Home Drive share.  After more investigations we found that this problem occurred for any shared drive, even if it was to \\computername\c$ of the same computer you were on.

After searching the Internet we found no way to resolve this issue.  There is mention of changing a registry key to "DontRefresh" which had limited success with others but didn't work for us.

We found this problem did not exist on another server in our environment and then we started looking into the differences.

Eventually we found it

Remove the following registry keys

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoRemoteRecursiveEvents
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoRemoteChangeNotify

Restart explorer and try again!

These registry settings were being applied as part of a performance upgrade script.  I guess from a networking perspective it does create less network traffic but does make explorer unusable I believe.

Hopefully this fixes the problem for you!!!

Thanks
Sam