<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JasonSamuel.com</title>
	<atom:link href="http://www.jasonsamuel.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jasonsamuel.com</link>
	<description>Cool stuff I see in the IT world</description>
	<lastBuildDate>Fri, 10 May 2013 16:38:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>How to setup Citrix Netscaler (Access Gateway) with multiple domains for web browsers and mobile devices</title>
		<link>http://www.jasonsamuel.com/2013/05/09/how-to-setup-citrix-netscaler-access-gateway-with-multiple-domains-for-web-browsers-and-mobile-devices/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-setup-citrix-netscaler-access-gateway-with-multiple-domains-for-web-browsers-and-mobile-devices</link>
		<comments>http://www.jasonsamuel.com/2013/05/09/how-to-setup-citrix-netscaler-access-gateway-with-multiple-domains-for-web-browsers-and-mobile-devices/#comments</comments>
		<pubDate>Thu, 09 May 2013 21:56:15 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix NetScaler]]></category>
		<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Citrix XenDesktop]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[citrix access gateway]]></category>
		<category><![CDATA[citrix agee]]></category>
		<category><![CDATA[citrix netscaler]]></category>
		<category><![CDATA[citrix receiver]]></category>
		<category><![CDATA[citrix xenapp]]></category>
		<category><![CDATA[citrix xendesktop]]></category>
		<category><![CDATA[netscaler]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2416</guid>
		<description><![CDATA[I&#8217;ve covered Access Gateway quite a bit in the past and these two articles on my blog are a good primer for what I&#8217;m about to cover: 1. How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver 2. Quick way to brand Access Gateway [...]<p><a href="http://www.jasonsamuel.com/2013/05/09/how-to-setup-citrix-netscaler-access-gateway-with-multiple-domains-for-web-browsers-and-mobile-devices/">How to setup Citrix Netscaler (Access Gateway) with multiple domains for web browsers and mobile devices</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/' rel='bookmark' title='How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver'>How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></li>
<li><a href='http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/' rel='bookmark' title='How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway'>How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway</a></li>
<li><a href='http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/' rel='bookmark' title='Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors'>Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve covered Access Gateway quite a bit in the past and these two articles on my blog are a good primer for what I&#8217;m about to cover:</p>
<p>1. <a href="http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/">How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></p>
<p>2. <a href="http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/">Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a></p>
<p>Now let&#8217;s throw a new scenario into the mix.  You want to allow users from another domain access to resources through your Access Gateway and Web Interface.  Here is what you need to do to accomplish this.</p>
<p><strong>SETTING UP A DROPDOWN BOX TO PASS THE DOMAIN</strong><br />
On your Access Gateway, if you followed my &#8220;branding guide&#8221; article above you will have noticed on the themes available from the Citrix blogs there are 2 versions, one normal and one with a dropdown.  If you chose Horizon to customize like I did, make sure to download Horizon2.gz which has the code for the dropdown already in it. You just need to add your domains in the code.  This is found in these two files:</p>
<p><code>\Horizon2\ns_gui\vpn\index.html</code></p>
<p><code>\Horizon2\ns_gui\vpn\tmindex.html</code></p>
<p>If you have your own theme and just want to add the code, Citrix has an excellent CTX article here covering it:</p>
<p>How to Add a Drop-down Menu with Domain Names on the Logon Page for Access Gateway Enterprise Edition:<br />
<a href="http://support.citrix.com/article/CTX118657">http://support.citrix.com/article/CTX118657</a></p>
<p>What&#8217;s happening here is that a dropdown box is created with pre-populated domain names that you specify in your code.  The user selects the proper domain when logging in and then this domain name is inserted into the header and passed to the Netscaler Access Gateway vserver where the authentication policy examines it.  Based on the name the Netscaler sees in the header, it forwards the request on to the correct authentication server.  This works great with LDAP authentication servers.  I have not tested it with TACACS or RADIUS yet.</p>
<p><strong>SETTING UP ACTIVE DIRECTORY LDAP AUTHENTICATION</strong><br />
Now it&#8217;s time to setup your Active Directory authentication for each of your domains.</p>
<p>1. Download LDAP Browser 4.5 for free here:  <a href="http://www.ldapbrowser.com/download.htm">http://www.ldapbrowser.com/download.htm</a></p>
<p>2. Go to your Netscaler under System > Authentication > Servers tab and create a new LDAP server.  Use port 636 for secure LDAP instead of 389.  Use LDAP Browser to get the Base DN and Administrator Bind DN.  I prefer to use the app so I don&#8217;t fat finger the distinguished name and spend an hour trying to figure out that I missed a comma. Using LDAP Browser is much quicker and less error prone.  The Base DN can be your entire AD domain or you can lock it down to an OU.  The Administrator Bind DN is the actual account name that is used to enumerate AD.  So CN = the user name, OU= the OU it&#8217;s in, etc.  Add the password for this service account.</p>
<p>Make sure to select &#8220;SSL&#8221; for security type near the bottom.  Click the blue &#8220;Retrieve attributes&#8221; link and it should talk to AD.  Then the drop down boxes in Other Settings will not be greyed out anymore.  Set the following:</p>
<p>Server Logon Name Attribute = samAccountName<br />
Group Attribute = memberOf<br />
Sub Attribute Name = CN<br />
SSO Name Attribute = UserPrincipalName</p>
<p>So everything should look like this so far:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/1.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/1-300x206.jpg" alt="1" width="300" height="206" class="aligncenter size-medium wp-image-2421" /></a></p>
<p>3. Now expand the Netsted Group Extraction arrow near the bottom.  You need to enable it and set the same Group Name Identifier as you did for Server Logon Name Atrribute.  In this case samAccountName.  Then press OK to create the server:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/2.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/2-300x285.jpg" alt="2" width="300" height="285" class="aligncenter size-medium wp-image-2422" /></a></p>
<p>4. Now it&#8217;s time to create the policy and bind it to the server.  Hit the tab for Policies and create a new policy.  Choose the server you just created.  For the Expression, you will want:</p>
<p><code>REQ.HTTP.HEADER Cookie CONTAINS domain1</code></p>
<p>where domain1 is the name of your first domain.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/3.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/3-300x154.jpg" alt="3" width="300" height="154" class="aligncenter size-medium wp-image-2423" /></a></p>
<p>5.  Now do steps 2 through 4 again but for your second domain, domain2.</p>
<p>6. Almost done.  What we&#8217;ve done so far is create two authentication servers and two authentication policies.  These two policies are good for web browser users (IE, Firefox, Chrome, Safari, etc.) but mobile devices using the Citrix Receiver native app like iPhones, iPads, Android phones, Android tablets, etc. will not work just yet.  This is because they cannot pass cookie values.  Nor do they pass the domain during authentication against the Access Gateway (a traffic capture can confirm it only passes user ID and password).  You need to create a different set of authentication policies for these.  So you will create one for each domain.  You will bind to the same authentication server as the other policies but you&#8217;ll want to add the word &#8220;mobile&#8221; or something descriptive to the end of the policy name so you know what it is for.  The expression should be:</p>
<p><code>REQ.HTTP.HEADER User-Agent CONTAINS CitrixReceiver</code></p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/4.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/4-300x213.jpg" alt="4" width="300" height="213" class="aligncenter size-medium wp-image-2424" /></a></p>
<p>7. Now do the same for your other domain, domain2. </p>
<p>8. Now go to your Access Gateway vserver and add all 4 policies you created.  Take a look at my example screenshot closely and the priority order.  </p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/5.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/5-300x146.jpg" alt="5" width="300" height="146" class="aligncenter size-medium wp-image-2425" /></a></p>
<p>Here is the logic behind this policy order:</p>
<p><strong><em>100</em></strong> &#8211; Domain1 user logs in via web browser and uses drop down/passes cookie for domain1 so authenticates against domain 1 DC.</p>
<p><strong><em>110</em></strong> &#8211; Domain2 logins via web browser and uses drop down/passes cookie for domain2 so authenticates against domain 2 DC</p>
<p><strong><em>120</em></strong> &#8211; Domain1 user logins via iPad so first two policies are automatically false since the native Citrix Receiver app can&#8217;t pass a cookie.  Authentication policy is looking for CitrixReceiver in the header so it will try to authenticate against domain 1 DC.  It will be successful and the user will see his apps.</p>
<p><strong><em>130</em></strong> &#8211; Domain2 user logins via iPad.  The first two are false for the same reason as 120.  The expression from policy 120 is true so the user will actually authenticate and fail against domain 1 DC.  Then it moves on to the 130 policy and authenticates against the domain 2 DC.  It will be successful and the user will see his apps.  Note, if a user has the same account name on both domains, it will cause a rejected login attempt on domain 1 which depending on your Active Directory account lockout policy can eventually lead to an account lockout.  Just be mindful of this and adjust your policy accordingly if you need to.</p>
<p><strong>MODIFYING YOUR SESSION POLICIES</strong><br />
9. Now on to the session policies.  If you followed my guide on <a href="http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/">How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a> you should have 2 policies.  One for regular traffic and one for mobile/Citrix Receiver traffic.  Should look something like this:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/7.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/7-300x245.jpg" alt="7" width="300" height="245" class="aligncenter size-medium wp-image-2438" /></a></p>
<p>Go ahead and click on the blue profile link for the CitrixReceiver policy first.  </p>
<p>10. Under the Published Applications tab, clear the Single Sign-on Domain, you don&#8217;t need it anymore.  SSO is being handled by the authentication server now.  Specifically the SSO Name Attribute setting for each server which you set as UserPrincipalName.  So it is automatically passing the UPN formatted user credentials to the Web Interface as the same time the user is successfully authenticating against the Access Gateway using the SAM account name.  Pretty cool right?  Now do the same for your other policy that controls regular web traffic.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/8.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/8-271x300.jpg" alt="8" width="271" height="300" class="aligncenter size-medium wp-image-2439" /></a></p>
<p>11. An extra step for your mobile traffic policy.  Under the Client Experience tab, you can set the Clientless Access to Allow and the Plug-in Type to Java but it&#8217;s not necessary.  It will still work but since it&#8217;s mobile traffic only, this won&#8217;t hurt.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/9.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/9-270x300.jpg" alt="9" width="270" height="300" class="aligncenter size-medium wp-image-2440" /></a></p>
<p><strong>SETTING UP ACTIVE DIRECTORY AUTHENTICATION GROUPS</strong><br />
12.  Now let&#8217;s move on to setting up your authentication groups.  Let&#8217;s say each domain has a security group that gives users access via the Access Gateway.  Again, there are 2 well documented methods for group extraction:</p>
<p>How to Configure a NetScaler Appliance for Active Directory Group Extraction for LDAP:<br />
<a href="http://support.citrix.com/article/CTX111079">http://support.citrix.com/article/CTX111079</a></p>
<p>How to Configure a NetScaler Appliance for Active Directory Group Extraction for LDAP Using the Groups Allowed To Login Feature:<br />
<a href="http://support.citrix.com/article/CTX125797">http://support.citrix.com/article/CTX125797</a></p>
<p>I prefer the first method.  It&#8217;s basically just one step in one place (the authentication server object) and goes into effect at the authentication level.  No fooling around trying to control it via a session policy.  So go back to your 2 authentication servers you created before and take a look at the Search Filter field.  It should be blank at the moment.</p>
<p>13. Go to LDAP Browser and get the DN for for the security group you want to give access to for your first domain.</p>
<p>14. Go back to the Search Filter field and type <code>memberOf=</code> followed by the DN (distinguished name) for the security group.  So it should look something like this:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/11.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/11-300x289.jpg" alt="11" width="300" height="289" class="aligncenter size-medium wp-image-2451" /></a></p>
<p>That easy.  Make sure to do it for the authentication server for domain 2 as well. Go ahead and test your login scenarios and everything should work perfectly.</p>
<p><strong>ADDING REDUNDANCY FOR YOUR AUTHENTICATION SERVERS</strong><br />
I only covered how to add a single authentication profile (domain controller) for each of the 4 policies on the vserver.  Most companies are going to have multiple DCs.  There is no way to add multiple DCs per authentication policy.  The solution is to create a Load Balanced vserver with all your DCs behind it per domain and then add the IP of the vserver to an authentication server that is bound to the authentication policy.  So in the example I&#8217;ve been showing you, I would have to create 2 load balanced vservers since I am working with 2 domains.  </p>
<p>15.   Go to Load Balancing > Servers > and add all your servers here:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/12.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/12-300x134.jpg" alt="12" width="300" height="134" class="aligncenter size-medium wp-image-2466" /></a></p>
<p>16. You guys know I prefer to create service groups vs. services and the reasons why if you&#8217;ve read my previous Netscaler articles so go to the Service Groups section and add a new services group.  Select SSL_TCP for the protocol.   </p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/22.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/22-300x191.jpg" alt="22" width="300" height="191" class="aligncenter size-medium wp-image-2479" /></a></p>
<p>Specify the server based members and make sure to set the port to 636.  You can weight the servers here if you want to.  Under the Monitors tab, go ahead and add a ping monitor or whichever monitor you prefer.  Do this for each group of your authentication servers.  You might want to group them by city, datacenters, production vs. DR, or whatever makes sense in your environment.  </p>
<p>17. Now create a load balanced virtual server for your first domain.  Select SSL_TCP for the protocol, port 636, and give it an IP address.  Under the Service Groups tabs, add the groups you need.  Keep in mind you won&#8217;t be able to see the SSL_TCP service group you created until you set the vserver protocol to SSL_TCP.  Under the Methods and Persistence tab, you can get creative if you like or just leave it the default Least Connection.  It really depends on your environment and where you prefer traffic to go.  Under the SSL Settings tab, bind the cert you use for your Access Gateway vserver.  Do all of this for your other domain as well.  Both load balanced vservers should be in the UP state at this point.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/23.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/23-300x294.jpg" alt="23" width="300" height="294" class="aligncenter size-medium wp-image-2480" /></a></p>
<p>18.  Now go to System > Authentication > Server tab and left click on one of the DCs.  Then at the bottom click Add, this will copy all of the settings on the DC you had highlighted and allow you to create a new one based off of it.  So you don&#8217;t have to put all your DNs and stuff in again.  Just give it a unique name and for the IP, type in the IP of LB vserver you just created for that domain:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/24.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/24-300x286.jpg" alt="24" width="300" height="286" class="aligncenter size-medium wp-image-2481" /></a></p>
<p>Now do the same for the other domain.  </p>
<p>19.  Now go to the Policies tab and edit each of your 4 policies.  You can simply change the server in the drop down to the new one you created for each of your 4 policies and you&#8217;re done.  All authentication traffic is now going through your load balanced vservers.  Keep in mind that before, LDAP traffic was going from your NSIP to each DC.  When you use LB vservers, traffic is going from the SNIP to each DC.  So make sure you have your firewall ports open from the correct source IPs or you won&#8217;t be able to authenticate.  Retest all your scenarios and everything should continue to work just as before.</p>
<p><strong>TROUBLESHOOTING LOGINS</strong><br />
Once you&#8217;ve set everything up you might encounter issues and need to troubleshoot.  There are a few ways to troubleshoot logins.  I&#8217;ve covered this before here:</p>
<p><a href="http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/">How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway</a></p>
<p>20. First you can troubleshoot the authentication layer but capturing of all authentication happening on the device.  Open Putty and connect via SSH to your Netscaler.  Enter the shell by typing </p>
<p><code>shell</code></p>
<p>and pressing enter.  Then type:</p>
<p><code>cat /tmp/aaad.debug</code></p>
<p>and the cursor will go to the next screen and wait.  Open up your web browser and attempt to login to the Access Gateway.  Immediately you will see the request happen in your SSH window.  You&#8217;ll see exactly what is happening line by line like this.  You&#8217;ll even see the nested group extraction taking place:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/16.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/16-300x159.jpg" alt="16" width="300" height="159" class="aligncenter size-medium wp-image-2467" /></a></p>
<p>The last line will show the accept or reject:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/17.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/17-300x32.jpg" alt="17" width="300" height="32" class="aligncenter size-medium wp-image-2468" /></a></p>
<p>When you&#8217;re done, press Ctrl+Z to exit.</p>
<p>21.  The next layer to troubleshoot is all the polices.  All of them, authentication, session, etc.  You want to see everything a user hits when he logs in.  So type the following:</p>
<p><code>nsconmsg -s disptime=1 -d current -g pol_hits </code></p>
<p>and login to the Access Gateway again using a web browser.  Immediately in your Putty window you&#8217;ll see what all policies were hit:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/18.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/18-300x69.jpg" alt="18" width="300" height="69" class="aligncenter size-medium wp-image-2469" /></a></p>
<p>This will help troubleshoot your policy flow.  We&#8217;ve built a lot of intelligence into the cascading authentication and session policies and based on the user&#8217;s device and domain, it will vary what all they hit.  This is an excellent way to test each of those scenarios.</p>
<p>22.  The last step is getting down to the packet layer and analyzing the traffic using Wireshark.  I&#8217;ve covered this in my previous post but go to System > Diagnostics > Start New Trace  and set the packet size to 0.  Then press Start.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/19.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/19-300x223.jpg" alt="19" width="300" height="223" class="aligncenter size-medium wp-image-2470" /></a></p>
<p>Login to your Access Gateway via web browser, stop the capture, and download it to your desktop.  You will also want to WinSCP into the Netscaler and grab the SSL RSA key for the SSL cert you are using on your Access Gateway site so you can decode the SSL traffic.  Then double click on the .cap packet capture file and it will open in Wireshark.  Go to Edit > Preferences > Protocols > SSL > and click Edit in the RSA Keys field:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/20.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/20-300x204.jpg" alt="20" width="300" height="204" class="aligncenter size-medium wp-image-2471" /></a></p>
<p>In the SSL Decrypt Window, hit New in the bottom right side and this window will popup.  Type in the IP address of the Access Gateway vserver, port 443, protocol http, the exact path on your hard drive to the SSL RSA key file, and leave the password blank.  Then press OK to add it:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/05/21.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/05/21-276x300.jpg" alt="21" width="276" height="300" class="aligncenter size-medium wp-image-2472" /></a></p>
<p>Press okay and get back to your capture.  Now in the Filter field, just type the following:</p>
<p><code>frame contains youruserID</code></p>
<p>because we want to find all the instances of your user ID being passed.  You should be able to find your user ID and password in plain text.  Follow the TCP stream if you need to to find out exactly what is happening.</p>
<p>Hope this helps.  Please leave a comment if this post helped you or if you have any questions and I&#8217;ll try my best to help.  <img src='http://www.jasonsamuel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.jasonsamuel.com/2013/05/09/how-to-setup-citrix-netscaler-access-gateway-with-multiple-domains-for-web-browsers-and-mobile-devices/">How to setup Citrix Netscaler (Access Gateway) with multiple domains for web browsers and mobile devices</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/' rel='bookmark' title='How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver'>How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></li>
<li><a href='http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/' rel='bookmark' title='How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway'>How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway</a></li>
<li><a href='http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/' rel='bookmark' title='Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors'>Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/05/09/how-to-setup-citrix-netscaler-access-gateway-with-multiple-domains-for-web-browsers-and-mobile-devices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to create a XenApp 6.5 Server 2008 R2 golden image for PVS 6.1</title>
		<link>http://www.jasonsamuel.com/2013/04/24/how-to-create-a-xenapp-6-5-server-2008-r2-golden-image-for-pvs-6-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-create-a-xenapp-6-5-server-2008-r2-golden-image-for-pvs-6-1</link>
		<comments>http://www.jasonsamuel.com/2013/04/24/how-to-create-a-xenapp-6-5-server-2008-r2-golden-image-for-pvs-6-1/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 22:49:12 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix Provisioning Services]]></category>
		<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Windows Server 2008]]></category>
		<category><![CDATA[citrix xenapp]]></category>
		<category><![CDATA[golden image]]></category>
		<category><![CDATA[provisioning server]]></category>
		<category><![CDATA[pvs 6.1]]></category>
		<category><![CDATA[pvs server]]></category>
		<category><![CDATA[server 2008 r2]]></category>
		<category><![CDATA[xenapp]]></category>
		<category><![CDATA[xenapp 6.5]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2087</guid>
		<description><![CDATA[I urge you to read my PVS 6.1 on XenDesktop/Windows 7 guide first. Read it and make sure you understand it. The same concepts and most all procedures apply to Server 2008 R2. So I am not going to get as detailed on PVS technology in this article. This is going to be more XenApp [...]<p><a href="http://www.jasonsamuel.com/2013/04/24/how-to-create-a-xenapp-6-5-server-2008-r2-golden-image-for-pvs-6-1/">How to create a XenApp 6.5 Server 2008 R2 golden image for PVS 6.1</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/11/08/citrix-pvs-server-vdisk-is-locked-0xffff8017-error-as-vms-boot-up/' rel='bookmark' title='Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up'>Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up</a></li>
<li><a href='http://www.jasonsamuel.com/2012/10/08/xenapp-applications-wont-launch-in-a-pvs-environment-with-multiple-network-interfaces/' rel='bookmark' title='XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces'>XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces</a></li>
<li><a href='http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/' rel='bookmark' title='How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense'>How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>I urge you to read my <a href="http://www.jasonsamuel.com/2012/06/26/how-to-install-and-configure-pvs-6-1-with-xendesktop-5-6/">PVS 6.1 on XenDesktop/Windows 7 guide</a> first.  Read it and make sure you understand it.  The same concepts and most all procedures apply to Server 2008 R2.  So I am not going to get as detailed on PVS technology in this article.  This is going to be more XenApp centric.  If you don&#8217;t have a thorough understanding of PVS, it is easy to become lost so please make sure and read that article and go through those screenshots first.</p>
<p>Citrix has an excellent eDoc primer for understanding the intricacies of XenApp on PVS located here.  I recommend skimming this before beginning:</p>
<p><a href="http://support.citrix.com/proddocs/topic/xenapp65-install/ps-image-prep.html">http://support.citrix.com/proddocs/topic/xenapp65-install/ps-image-prep.html</a></p>
<p>Now on to the steps.  This is just my way of doing it.  It works well for me.  There are a couple of different ways you can achieve the same thing so use what works for you:</p>
<p>1. I am assuming you already have a XenApp 6.5 farm created and at least one dedicated server for the role of the ZDC.  All XenApp servers provisioned via XenApp will be member servers of this farm and you do not want them to become a ZDC.  Just set the election preference in AppCenter under Zones.  In this example, I have a Default Zone and have set one server as the ZDC but it is best practice to have at least a handful of servers that are not provisioned to be set as preferred.  Just in case one goes down, you don&#8217;t want one your provisioned servers to become a ZDC:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/04/1.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/04/1-300x194.jpg" alt="1" width="300" height="194" class="aligncenter size-medium wp-image-2392" /></a></p>
<p>2. Now go to your XenServer and create a new Server 2008 R2 VM</p>
<p>3. Install XenServer Tools</p>
<p>4. Make a copy of the VM and convert it to a template.  This is your &#8220;clean&#8221; Server 2008 R2 image you can come back to later if you need to.  You can spin up new VMs from it.</p>
<p>5. Now go back to the VM you were working on and install things that are needed on all servers like Symantec, Citrix Offline Plugin (if you intend to leverage app streaming), etc. but try to keep it as clean as possible.  Remember, you are building just the base right now.  Don&#8217;t install any applications you plan to publish yet.</p>
<p>6. Add the server to the domain.  Make sure the name is the first server in your naming scheme, example: &#8220;ServerName-100&#8243; where 1 denotes the image number and 00 is the VM number.  The next VM that gets spun up using this image will be ServerName-101 and so on.</p>
<p>7. Begin installation of XenApp 6.5 like normal and follow Approach 3 detailed here:</p>
<p><a href="http://support.citrix.com/proddocs/topic/xenapp65-install/ps-image-prep.html">http://support.citrix.com/proddocs/topic/xenapp65-install/ps-image-prep.html</a></p>
<p>8. If you have multiple NICs in your PVS environment for streaming vs. regular network traffic there&#8217;s an extra step you have to perform in the VM.  Make sure you go into ICA Listener properties and set it to PVS Adapter #1, the network NIC.  Not the PVS streaming NIC which is #0.  They may be labeled differently in your environment depending on the NIC order of your VM.  Just remember, you want the network NIC to handle ICA, not the streaming NIC.</p>
<p>9. Now install the apps you intend to publish.  Just install, don&#8217;t try publishing anything yet.  If you plan on streaming apps to your XenApp servers via Citrix Offline Plugin or App-V, skip this step.</p>
<p>10. Install the PVS Target and reboot.  Do not run Imaging Wizard yet.</p>
<p>11. You can choose to install the EdgeSight agent at this point if you use EdgeSight in your environment.  There is an excellent guide from Citrix on how to install EdgeSight in a PVS environment below.  Don&#8217;t worry, when it detects the PVS Target software is on the system and the image is in private mode being updated, it won&#8217;t start the EdgeSight service and start sending your EdgeSight server junk data:</p>
<p><a href="http://support.citrix.com/proddocs/topic/edgesight54/es-agent-install-streamed.html">http://support.citrix.com/proddocs/topic/edgesight54/es-agent-install-streamed.html</a></p>
<p>12. Log back in to the VM and in the XenCenter console, set the PVS boot disk to boot first (BDM).  Then go to the PVS Console on the PVS server and create a new Device with the MAC address of this VM&#8217;s provisioning/streaming NIC.  Call the device ServerName-101 so it&#8217;s separate from the ServerName-100 original but call the vDisk 100 so you know where the image came from later (i.e. image 1).  Set device to Boot from Hard Disk.  Now reboot the VM.  You can let Imaging Wizard do this but if you really want to be hands on, you can choose to create and attach an empty vDisk of the same size as the c: drive of the VM now.  </p>
<p>13. It should have booted from the BDM boot disk and be connected to the empty vDisk you created.  Run Imaging Wizard and push the image across to the PVS Server vDisk (don&#8217;t forget to optimize the image). If you did not create a vDisk in the above steps, just create a new disk and run through the Wizard prompts to create it real quick.  It will assign the device to this new vDisk.  Reboot when you are asked to.</p>
<p>14. Log back in and immediately XenConvert will launch and begin pushing your image over to the newly created vDisk.</p>
<p>15. Now go to the PVS console and set your device to boot from vDisk and reboot your VM.  It should now be booting from your vDisk.</p>
<p>16. Log back in and re-run XenApp configuration and unjoin from farm using the prep option.  This is done by going to Start > Programs > Administrative Tools > Citrix > XenApp Server Role Manager > and then clicking on the XenApp Server Role Manager app.  Click Edit Configuration.  Then click Prepare this server for imaging and provisioning.  You want to just leave the defaults checked which is to remove it from the farm and join on the next boot.  Once it removes it, it will ask you to reboot.  Just close and power down the VM, don&#8217;t reboot.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/04/2.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/04/2-300x212.jpg" alt="2" width="300" height="212" class="aligncenter size-medium wp-image-2396" /></a></p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/04/3.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/04/3-300x252.jpg" alt="3" width="300" height="252" class="aligncenter size-medium wp-image-2397" /></a></p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/04/4.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/04/4-300x252.jpg" alt="4" width="300" height="252" class="aligncenter size-medium wp-image-2398" /></a></p>
<p>17. Go to your PVS server and change the vdisk from private to standard mode.  Now spin up a few VMs using the &#8220;Streamed VM Setup Wizard&#8221; in the PVS console.  You&#8217;re going to need a template and you&#8217;re going to want to setup your write cache.  I&#8217;ve covered this very well in my <a href="http://www.jasonsamuel.com/2012/06/26/how-to-install-and-configure-pvs-6-1-with-xendesktop-5-6/">PVS 6.1 on XenDesktop/Windows 7 guide</a> so I&#8217;m not going to get into the details here. Wait until the VMs are created and powered on.</p>
<p>18. Go to your ZDC and open up AppCenter and run a Discovery.  You should see the new member servers.  At this point you can begin publishing or streaming apps to them.</p>
<p><strong>TO MAKE CHANGES AND RESEAL THE IMAGE</strong><br />
1. Boot a device into maintenance mode after creating a maintenance version on the vDisk.  Or you can choose to power down all your running VMs and put the disk into private mode.  Your choice.</p>
<p>2. Make your changes.</p>
<p>3. Re-run XenApp configuration and unjoin from farm using the prep option.</p>
<p>4. Shut it down and promote the image to production if using versioning.  Or put the disk back into standard mode if you used the other method.</p>
<p>5. Reboot all your devices so it gets the new vdisk</p>
<p>I hope this guide helps.  Please feel free to leave a comment below if you have any questions.  I&#8217;ll try and help as best as I can. <img src='http://www.jasonsamuel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.jasonsamuel.com/2013/04/24/how-to-create-a-xenapp-6-5-server-2008-r2-golden-image-for-pvs-6-1/">How to create a XenApp 6.5 Server 2008 R2 golden image for PVS 6.1</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/11/08/citrix-pvs-server-vdisk-is-locked-0xffff8017-error-as-vms-boot-up/' rel='bookmark' title='Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up'>Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up</a></li>
<li><a href='http://www.jasonsamuel.com/2012/10/08/xenapp-applications-wont-launch-in-a-pvs-environment-with-multiple-network-interfaces/' rel='bookmark' title='XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces'>XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces</a></li>
<li><a href='http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/' rel='bookmark' title='How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense'>How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/04/24/how-to-create-a-xenapp-6-5-server-2008-r2-golden-image-for-pvs-6-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Opening Sharepoint documents in a Windows 7 XenDesktop session using XenApp published Office products with content redirection</title>
		<link>http://www.jasonsamuel.com/2013/03/26/opening-sharepoint-documents-in-a-windows-7-xendesktop-session-using-xenapp-published-office-products-with-content-redirection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=opening-sharepoint-documents-in-a-windows-7-xendesktop-session-using-xenapp-published-office-products-with-content-redirection</link>
		<comments>http://www.jasonsamuel.com/2013/03/26/opening-sharepoint-documents-in-a-windows-7-xendesktop-session-using-xenapp-published-office-products-with-content-redirection/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 21:17:37 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix Provisioning Services]]></category>
		<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Citrix XenDesktop]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[Sharepoint 2010]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[citrix receiver]]></category>
		<category><![CDATA[content redirection]]></category>
		<category><![CDATA[excel 2010]]></category>
		<category><![CDATA[ica client]]></category>
		<category><![CDATA[office 2010]]></category>
		<category><![CDATA[pnagent]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[visio 2010]]></category>
		<category><![CDATA[word 2010]]></category>
		<category><![CDATA[xenapp]]></category>
		<category><![CDATA[xendesktop]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2291</guid>
		<description><![CDATA[Wow, long title there! Just like it says, I&#8217;m going to cover opening Sharepoint documents in a Windows 7 XenDesktop VDI session using XenApp published Office products with content redirection enabled. Here&#8217;s an example scenario: Your company uses Sharepoint and the URL is http:\\sharepoint.domain.com. It is part of the Local Intranet zone in IE. Your [...]<p><a href="http://www.jasonsamuel.com/2013/03/26/opening-sharepoint-documents-in-a-windows-7-xendesktop-session-using-xenapp-published-office-products-with-content-redirection/">Opening Sharepoint documents in a Windows 7 XenDesktop session using XenApp published Office products with content redirection</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2010/04/08/how-to-edit-word-and-excel-documents-in-sharepoint-2007-using-firefox/' rel='bookmark' title='How to edit Word and Excel documents in Sharepoint 2007 using Firefox'>How to edit Word and Excel documents in Sharepoint 2007 using Firefox</a></li>
<li><a href='http://www.jasonsamuel.com/2009/09/15/how-do-you-get-sharepoint-2007-to-read-and-index-content-inside-a-pdf-file/' rel='bookmark' title='How do you get SharePoint 2007 to read and index content inside a PDF file?'>How do you get SharePoint 2007 to read and index content inside a PDF file?</a></li>
<li><a href='http://www.jasonsamuel.com/2012/06/26/how-to-install-and-configure-pvs-6-1-with-xendesktop-5-6/' rel='bookmark' title='How to install and configure PVS 6.1 with XenDesktop 5.6'>How to install and configure PVS 6.1 with XenDesktop 5.6</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Wow, long title there!  Just like it says, I&#8217;m going to cover opening Sharepoint documents in a Windows 7 XenDesktop VDI session using XenApp published Office products with content redirection enabled.  Here&#8217;s an example scenario:</p>
<ul>
<li>Your company uses Sharepoint and the URL is <code>http:\\sharepoint.domain.com</code>.  It is part of the Local Intranet zone in IE.</li>
<p></p>
<li>Your users are using Windows 7 VDI/XenDesktop VMs with Citrix Receiver Enterprise pulling published apps into the Start menu.</li>
<p></p>
<li>You have Office 2010 products (Word 2010, Excel 2010, Visio 2010, etc) published via XenApp with content redirection enabled so .docx, .xlsx, .vsd files launched in the VDI session will open using the published Office app.</li>
<p></p>
<li>Your users want to click on a Word, Excel, Visio, etc. document in a Sharepoint document library and click the Edit button to edit the document instead of just Read Only. They expect the published Office app to launch and allow them to edit the document.</li>
</ul>
<p><strong>THE PROBLEMS</strong><br />
In this scenario, when the user clicks on let&#8217;s say a Visio document in Sharepoint, the published app will launch but the document will not be sucked in.  You&#8217;ll get a &#8220;File not found&#8221; error and if you look closely, the URL begins with &#8220;<code>\\</code>&#8221; as if it&#8217;s a UNC path instead of an HTTP path:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/21.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/21-300x67.jpg" alt="2" width="300" height="67" class="aligncenter size-medium wp-image-2292" /></a></p>
<p>If you click OK, Visio will open but no diagram will open.</p>
<p>If you right click, Save As the Visio diagram to your C: drive and attempt to open it locally, it will launch the published Visio instance but will give you the following &#8220;File not found&#8221; error: </p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/11.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/11-300x100.jpg" alt="1" width="300" height="100" class="aligncenter size-medium wp-image-2293" /></a></p>
<p>Again, look closely.  It says &#8220;<code>\\Client\</code>&#8221; instead of your VM&#8217;s name.</p>
<p><strong>THE FIXES</strong><br />
Well, really it&#8217;s 1 fix and 1 workaround for now.  Let&#8217;s start with the fix first.  We&#8217;re going to get local files and files residing on network shares launching right using the published app.  I&#8217;m going to use Visio and a .vsd file again as the example:</p>
<p>1. On the Windows 7 VM, you must enabled Native Drive Mapping to be able to launch the .vsd file via published Visio.  You can follow the CTX article here to make the registry change:</p>
<p><a href="http://support.citrix.com/article/CTX130378" target="_blank">http://support.citrix.com/article/CTX130378</a></p>
<p>or you can enforce it via group policy.  One thing though, on Windows 7 x64 the path is:</p>
<p><pre><code>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\Engine\Configuration\
Advanced\Modules\ClientDrive

NativeDriveMapping
Reg Type: REG_SZ
Add the Value: True
</code></pre></p>
<p>Once the value is set to TRUE, try launching the .vsd file you saved to your hard drive or on a network share.  It will launch immediately.  Then go to File &#8211; Save As in Visio and checkout the path bar.  It will say &#8220;<code>\\Client\C$\Users\xxxx\</code>&#8221;.  So now your system recognizes the word &#8220;Client&#8221;.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/3.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/3-300x192.jpg" alt="3" width="300" height="192" class="aligncenter size-medium wp-image-2294" /></a></p>
<p>This is because you&#8217;re going through 2 virtualization layers. Citrix has an excellent article detailing how Client drives are passed through multiple sessions here:<br />
<a href="http://support.citrix.com/article/CTX127872">http://support.citrix.com/article/CTX127872</a></p>
<p>You can also read more about the NativeDriveMapping key here:<br />
<a href="http://support.citrix.com/article/CTX124389" target="_blank">http://support.citrix.com/article/CTX124389</a></p>
<p>Additionally here is a really good CTX article from Citrix that covers Client Drive Mapping troubleshooting that might be helpful to you:<br />
<a href="http://support.citrix.com/article/CTX238200" target="_blank">http://support.citrix.com/article/CTX238200</a></p>
<p>And some info describing differences in Client drive mapping between the different versions of XenApp and Presentation Server here:<br />
<a href="http://support.citrix.com/article/CTX127614" target="_blank">http://support.citrix.com/article/CTX127614</a></p>
<p></p>
<p>2. Now back to Visio diagrams in Sharepoint.  First you need to verify content redirection is behaving correctly.  In my case, I needed to make sure to change the published app location to include the &#8220;<code>%**</code>&#8221; switch.  By default when you enable content direction, it will be:</p>
<p><code>&quot;D:\Program Files (x86)\Microsoft Office\Office14\VISIO.EXE&quot; &quot;%*&quot;</code></p>
<p>with just one asterisk.  You need to add two so it looks like this:</p>
<p><code>&quot;D:\Program Files (x86)\Microsoft Office\Office14\VISIO.EXE&quot; &quot;%**&quot; </code> </p>
<p>The reason for this is documented in this CTX article:</p>
<p><a href="http://support.citrix.com/article/CTX116887" target="_blank">http://support.citrix.com/article/CTX116887</a></p>
<p>This was written for Presentation Server 4.5 but it still applies to XenApp 6.5 just fine.</p>
<p>Once you get content redirection squared away on your XenApp server, things will still not work correctly unfortunately when opening docs in Sharepoint in your XenDesktop session.  You can try right clicking and editing but you will still get the File not found error.  This error has nothing to do with Client Drive Mapping.  Being a Sharepoint Architect in a previous role long ago, my gut feeling was this is a WebDAV issue.  Remember, Sharepoint uses <a href="http://en.wikipedia.org/wiki/WebDAV">WebDAV </a> with document libraries though to the casual observer it might appear to be a UNC file share path.  My gut was telling me Receiver was not handling WebDav paths correctly and was treating them like regular SMB file share paths.  No proof this is the culprit just yet, only a hunch.  </p>
<p>Let&#8217;s run an experiment.  In your Sharepoint document library, click Actions > Open with Windows Explorer:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/4.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/4-300x245.jpg" alt="4" width="300" height="245" class="aligncenter size-medium wp-image-2295" /></a></p>
<p>You&#8217;ll notice the path bar says &#8220;http://sharepoint.domain.com&#8221; when you open it here:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/5.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/5-300x117.jpg" alt="5" width="300" height="117" class="aligncenter size-medium wp-image-2296" /></a></p>
<p>Go ahead and launch the Visio diagram in this document library.  When you try and launch it, it will launch published Visio and give you the same File not Found error as before.  In some scenarios even an Access Denied error though it never actually was able to find the file.  Again, it is looking for &#8220;<code>\\sharepoint.domain.com</code>&#8221; instead of using WebDAV (or the DavWWWRoot keyword) which should be parsed like the HTTP protocol &#8220;<code>http:\\sharepoint.domain.com</code>&#8221;.  Sharepoint Content Redirection is never going to work because Citrix Receiver doesn&#8217;t know how to get there.  One work around is to tell your users to save locally, edit, then upload.  But this is annoying and most users will complain.  </p>
<p>I started thinking Mini Redirector (which is Microsoft&#8217;s WebDav client and part of the Windows 7 OS) was trying to hand-off the DavWWWRoot keyword in the URL to Receiver and Receiver didn&#8217;t know what to do with it.  Looking at the URL though it didn&#8217;t even seem to be passing it through.  It was as if it was passing a straight UNC path.  Or maybe is was not talking to owssupp.dll which is required to interact with and edit docs in Sharepoint.  Maybe somehow it wasn&#8217;t handing off through Receiver properly.  Now I was really starting to go down the rabbit hole and before I dug further, I figured I&#8217;d give Citrix Support a call and see if they had any input.</p>
<p>I was able to talk to a XenApp support technician and a XenApp Developer who were both very knowledgeable.  I explained my WebDav theory and we ran a little experiment.  We ran Process Monitor from my Windows 7 workstation and attempted to edit a simple Word document in Sharepoint.  The published version of Word launched as expected and failed to find the file.  Here is the URL that was passed to the PNAgent when we used the Process Tree display:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/6.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/6-300x48.jpg" alt="6" width="300" height="48" class="aligncenter size-medium wp-image-2341" /></a></p>
<p>You can see that it passed:</p>
<p><code>\\Client\\\sharepoint.domain.com\link\to\doc\repository\test jason.docx&quot;</code></p>
<p>Looks a bit odd, doesn&#8217;t it?  No wonder it can&#8217;t find the file.</p>
<p>Then we went to the XenApp server with Word 2010 installed locally, opened Internet Explorer, and navigated to the Sharepoint document library.  When I clicked Edit on the Word document this time, this is what was passed to the locally installed Word:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/7.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/7-300x58.jpg" alt="7" width="300" height="58" class="aligncenter size-medium wp-image-2344" /></a></p>
<p>And of course the Word document successfully launched.  You can see it passed a nicely formatted HTTP URL:</p>
<p><code>http://sharepoint.domain.com/link/to/doc/repository/test%20jason.docx&quot;</code></p>
<p>The XenApp Developer verified this was actually a bug and needed to be fixed.  It may or may not be WebDav related, but he confirmed there is definitely a disconnect at the Content Redirection level via Sharepoint as I had suspected.  It has been added to their bug queue to get taken care of.  </p>
<p>In the mean time, his suggestion is to publish Sharepoint itself on the same server Office 2010 products are installed on (publish IE passing the Sharepoint URL during launch).  This is a good workaround but may annoy a few users.  I always hate publishing IE because of the stuff you have to do to lock down/harden the browser.  People can get confused and start browsing to Youtube or other process intensive websites using this published instance of IE if you don&#8217;t completely lock down the allowed URLs.  This can cause a severe impact on XenApp performance for all users on the box.  If I limit tabs, then people start complaining they can&#8217;t open additional tabs and the helpdesk gets flooded with phone calls.  So just keep that in mind if you use this workaround.  </p>
<p>Another work around I found online is by Anthony Obi:</p>
<p><a href="http://community.obilogic.co.uk/blogs/teamblog/archive/2011/10/25/sharepoint-2010-edit-document-via-citrix-xenapp.aspx">http://community.obilogic.co.uk/blogs/teamblog/archive/2011/10/25/sharepoint-2010-edit-document-via-citrix-xenapp.aspx</a></p>
<p>He has an issue where owssupp.dll was not being detected on the client system (because it wasn&#8217;t there) and added an extra menu item in his Sharepoint deployment to edit documents as a work around.  He modified the new Edit action to launch some Javascript that talks to PNAgent.exe that then talks to the published Office instance and passes the correct URL. This might work as well for you but of course it requires a modification of your Sharepoint environment and end user training.</p>
<p>I will post here as I get updates from Citrix Support on this issue.  It&#8217;s a fairly unique scenario but definitely not uncommon in the real world as application delivery and desktop virtualization continue to be separated through multiple layers.</p>
<p><a href="http://www.jasonsamuel.com/2013/03/26/opening-sharepoint-documents-in-a-windows-7-xendesktop-session-using-xenapp-published-office-products-with-content-redirection/">Opening Sharepoint documents in a Windows 7 XenDesktop session using XenApp published Office products with content redirection</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2010/04/08/how-to-edit-word-and-excel-documents-in-sharepoint-2007-using-firefox/' rel='bookmark' title='How to edit Word and Excel documents in Sharepoint 2007 using Firefox'>How to edit Word and Excel documents in Sharepoint 2007 using Firefox</a></li>
<li><a href='http://www.jasonsamuel.com/2009/09/15/how-do-you-get-sharepoint-2007-to-read-and-index-content-inside-a-pdf-file/' rel='bookmark' title='How do you get SharePoint 2007 to read and index content inside a PDF file?'>How do you get SharePoint 2007 to read and index content inside a PDF file?</a></li>
<li><a href='http://www.jasonsamuel.com/2012/06/26/how-to-install-and-configure-pvs-6-1-with-xendesktop-5-6/' rel='bookmark' title='How to install and configure PVS 6.1 with XenDesktop 5.6'>How to install and configure PVS 6.1 with XenDesktop 5.6</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/03/26/opening-sharepoint-documents-in-a-windows-7-xendesktop-session-using-xenapp-published-office-products-with-content-redirection/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to use PowerShell and PsExec to change the RDS license server name on all your XenApp servers</title>
		<link>http://www.jasonsamuel.com/2013/03/07/how-to-use-powershell-and-psexec-to-change-the-rds-license-server-name-on-all-your-xenapp-servers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-use-powershell-and-psexec-to-change-the-rds-license-server-name-on-all-your-xenapp-servers</link>
		<comments>http://www.jasonsamuel.com/2013/03/07/how-to-use-powershell-and-psexec-to-change-the-rds-license-server-name-on-all-your-xenapp-servers/#comments</comments>
		<pubDate>Thu, 07 Mar 2013 19:17:11 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Windows Server 2008]]></category>
		<category><![CDATA[change rds license server]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[psexec]]></category>
		<category><![CDATA[rds cals]]></category>
		<category><![CDATA[rds licensing]]></category>
		<category><![CDATA[terminal server licensing]]></category>
		<category><![CDATA[ts cals]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2246</guid>
		<description><![CDATA[Let&#8217;s say you decide to decommission your Remote Desktop Services (RDS)/Terminal Services Licensing Server or you moved your TS/RDS CALs to a different server. That means you need to change the name to the new server under Remote Desktop Session Host Configuration on all your XenApp servers. This is a pain to do manually when [...]<p><a href="http://www.jasonsamuel.com/2013/03/07/how-to-use-powershell-and-psexec-to-change-the-rds-license-server-name-on-all-your-xenapp-servers/">How to use PowerShell and PsExec to change the RDS license server name on all your XenApp servers</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/03/16/script-to-make-your-citrix-xenapp-servers-run-better-with-sep-antivirus/' rel='bookmark' title='Script to make your Citrix XenApp servers run better with SEP antivirus'>Script to make your Citrix XenApp servers run better with SEP antivirus</a></li>
<li><a href='http://www.jasonsamuel.com/2012/01/17/how-to-fix-the-error-30105-citrix-servers-do-not-trust-the-server-message-in-xendesktop-5-5/' rel='bookmark' title='How to fix the Error 30105 Citrix servers do not trust the server message in XenDesktop 5.5'>How to fix the Error 30105 Citrix servers do not trust the server message in XenDesktop 5.5</a></li>
<li><a href='http://www.jasonsamuel.com/2009/07/22/how-to-install-and-configure-snmp-via-command-line-on-your-servers/' rel='bookmark' title='How to install and configure SNMP via command line on your servers'>How to install and configure SNMP via command line on your servers</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Let&#8217;s say you decide to decommission your Remote Desktop Services (RDS)/Terminal Services Licensing Server or you moved your TS/RDS CALs to a different server.  That means you need to change the name to the new server under Remote Desktop Session Host Configuration on all your XenApp servers.  </p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/1.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/1-300x221.jpg" alt="1" width="300" height="221" class="aligncenter size-medium wp-image-2265" /></a></p>
<p>This is a pain to do manually when you have several hundred XenApp servers.  You can do it through group policy but you may only want to change it on a subset of servers in an OU and not all of them.  So I used PowerShell and PsExec to precisely target all my XenApp servers I wanted to change.  It&#8217;s a very quick option when you are pressed for time.</p>
<p>You&#8217;ll need to create rds.bat and rds.ps1 and put them in <code>&quot;d:\rdsscript&quot;</code> on the server you plan to run the Powershell script from.  You&#8217;ll want to share out your <code>&quot;d:\rdsscript&quot;</code> folder on the server you plan on running the script from, otherwise you might get Access Denied errors because the script references a UNC path.  The contents of these two files is below.</p>
<p><strong>rds.bat contents:</strong><br />
<pre><code>
powershell.exe -executionPolicy unrestricted -command 
&quot;\\yourserver\rdsscript\rds.ps1&quot;
</code></pre></p>
<p><strong>rds.ps1 contents:</strong><br />
<pre><code>
Import-Module RemoteDesktopServices
cd RDS:\
cd .\RDSConfiguration\LicensingSettings\SpecifiedLicenseServers
new-item –name newlicenseserver.yourdomain.fqdn
remove-item oldlicenseserver.yourdomain.fqdn -confirm:$false -recurse:$true
</code></pre></p>
<p>Modify the rds.ps1 script with the name(s) of the servers you want to add a the name(s) of the servers you want to remove.  You can run rds.bat locally on a XenApp server as a test to see if it worked.</p>
<p>Now it&#8217;s time to run it on all your XenApp servers remotely. You can use any number of delivery methods.  Again I chose to use PsExec because it&#8217;s quick and gets the job done.  I highly recommend doing your dev, staging, etc. servers first before doing it in production.</p>
<p>Now copy PsExec.exe into the <code>&quot;d:\rdsscript&quot;</code> folder.  You&#8217;ll also want to create psexec.bat and xenappserverlist.txt now.  Here are the contents of the two files:</p>
<p><strong>psexec.bat contents:</strong><br />
<pre><code>psexec -s @xenappserverlist.txt &quot;\\yourserver\rdsscript\rds.bat&quot; 
pause</code></pre></p>
<p><strong>xenappserverlist.txt contents:</strong><br />
<pre><code>
XenAppServer01
XenAppServer02
XenAppServer03
XenAppServer04
XenAppServer05
</code></pre></p>
<p>So your shared directory on the server you plan on running the script from will look something like this:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/03/2.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/03/2-300x129.jpg" alt="2" width="300" height="129" class="aligncenter size-medium wp-image-2267" /></a></p>
<p>Now just double click on psexec.bat and it will run the script on each of your XenApp servers in the list.  The &#8220;<code>-s</code>&#8221; tells psexec to execute as the local system account so you don&#8217;t have to put your username and password in the script.  I don&#8217;t like to put usernames and passwords in the script because doing that would send it across the network in plain text so it may be a security concern.</p>
<p>Hope this helps.  Let me know if you have any other methods to accomplish an RDS license server migration quickly.  I&#8217;m always looking for more options. <img src='http://www.jasonsamuel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.jasonsamuel.com/2013/03/07/how-to-use-powershell-and-psexec-to-change-the-rds-license-server-name-on-all-your-xenapp-servers/">How to use PowerShell and PsExec to change the RDS license server name on all your XenApp servers</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/03/16/script-to-make-your-citrix-xenapp-servers-run-better-with-sep-antivirus/' rel='bookmark' title='Script to make your Citrix XenApp servers run better with SEP antivirus'>Script to make your Citrix XenApp servers run better with SEP antivirus</a></li>
<li><a href='http://www.jasonsamuel.com/2012/01/17/how-to-fix-the-error-30105-citrix-servers-do-not-trust-the-server-message-in-xendesktop-5-5/' rel='bookmark' title='How to fix the Error 30105 Citrix servers do not trust the server message in XenDesktop 5.5'>How to fix the Error 30105 Citrix servers do not trust the server message in XenDesktop 5.5</a></li>
<li><a href='http://www.jasonsamuel.com/2009/07/22/how-to-install-and-configure-snmp-via-command-line-on-your-servers/' rel='bookmark' title='How to install and configure SNMP via command line on your servers'>How to install and configure SNMP via command line on your servers</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/03/07/how-to-use-powershell-and-psexec-to-change-the-rds-license-server-name-on-all-your-xenapp-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AppSense Management Console crashes when trying to add Client Access Credentials</title>
		<link>http://www.jasonsamuel.com/2013/02/12/appsense-management-console-crashes-when-trying-to-add-client-access-credentials/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appsense-management-console-crashes-when-trying-to-add-client-access-credentials</link>
		<comments>http://www.jasonsamuel.com/2013/02/12/appsense-management-console-crashes-when-trying-to-add-client-access-credentials/#comments</comments>
		<pubDate>Tue, 12 Feb 2013 23:24:41 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[AppSense]]></category>
		<category><![CDATA[appsense]]></category>
		<category><![CDATA[appsense client access credentials]]></category>
		<category><![CDATA[appsense management console]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2210</guid>
		<description><![CDATA[Sometimes after restoring an AppSense database and/or rebuilding an AppSense server, you might notice you can&#8217;t push agents (Client Communications Agent/CCA, Environment Manager Agent, etc.) to clients and it will give you an error in the Management Console. The Status field will say: No client access credentials have been specified.&#160;&#160;Please enter credentials before retrying to [...]<p><a href="http://www.jasonsamuel.com/2013/02/12/appsense-management-console-crashes-when-trying-to-add-client-access-credentials/">AppSense Management Console crashes when trying to add Client Access Credentials</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/' rel='bookmark' title='How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense'>How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</a></li>
<li><a href='http://www.jasonsamuel.com/2011/08/09/getting-admin-access-on-a-sql-server-when-you-dont-know-the-sa-account-password/' rel='bookmark' title='Getting admin access on a SQL Server when you don&#8217;t know the SA account password'>Getting admin access on a SQL Server when you don&#8217;t know the SA account password</a></li>
<li><a href='http://www.jasonsamuel.com/2010/02/08/getting-firefox-to-pass-active-directory-credentials-to-sharepoint-2007/' rel='bookmark' title='Getting Firefox to pass Active Directory credentials to Sharepoint 2007'>Getting Firefox to pass Active Directory credentials to Sharepoint 2007</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>Sometimes after restoring an AppSense database and/or rebuilding an AppSense server, you might notice you can&#8217;t push agents (Client Communications Agent/CCA, Environment Manager Agent, etc.) to clients and it will give you an error in the Management Console. The Status field will say:</p>
<p><code>No client access credentials have been specified.&nbsp;&nbsp;Please enter credentials before retrying to to Poll the client.</code></p>
<p>and under the Client Access Log, you can see more details on the error:</p>
<p><code>Could not use credential: &quot;DOMAIN\UserID&quot;, error:&nbsp;&nbsp;Password decryption failed, error: [Unable to access the Master Key on the server, error was Keyset does not exist.]</code></p>
<p>In a pinch, you can manually install the agents on the client and they will start checking in but you are still going to get these error messages in the Management Console:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/22.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/22-300x176.jpg" alt="2" width="300" height="176" class="aligncenter size-medium wp-image-2211" /></a></p>
<p>When you go to &#8220;Client Access Credentials&#8221;, you will get prompted with the following error message:</p>
<p><code>DataAccessServices.CryptoManager+MasterKeyAccessException: Unable to access the Master Key on the server, error was Keyset does not exist</code></p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/12.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/12-300x178.jpg" alt="1" width="300" height="178" class="aligncenter size-medium wp-image-2212" /></a></p>
<p>If you hit OK and attempt to enter the missing credentials, the AppSense Management Console will crash on you.  As in the entire MMC will crash and disappear.  Don&#8217;t worry, this is an easy fix.</p>
<p>1. Go to Start > All Programs > AppSense > Management Center > AppSense Management Server Configuration</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/8.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/8-300x276.jpg" alt="8" width="300" height="276" class="aligncenter size-medium wp-image-2229" /></a></p>
<p>2. The Encryption field will likely be red.  Just click it and you will see the Encryption Key Status is &#8220;Not Valid&#8221;.  The Transfer Key may also say &#8220;Not Present&#8221;:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/32.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/32-300x204.jpg" alt="3" width="300" height="204" class="aligncenter size-medium wp-image-2215" /></a></p>
<p>3. Go ahead and click the &#8220;Regenerate&#8221; button.  It will warn you asking &#8220;Are you sure that you want to replace the current master key hash?  A new master key hash will be regenerated&#8221;.  Go ahead and click OK:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/42.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/42-300x204.jpg" alt="4" width="300" height="204" class="aligncenter size-medium wp-image-2216" /></a></p>
<p>4. Now click &#8220;Store&#8221; for the Transfer Key.  It will ask you to enter a new Transfer Key Password.  Go ahead and type it in and press OK.  One thing to note, if you are load balancing the Management Server and it says the Transfer Key is &#8220;Present&#8221;, do not click Store and enter a new one.  Instead just click Retrieve and type the password when prompted. If you are load balancing and it doesn&#8217;t have the Transfer Key present, use Store on the first server and when performing these steps on the second server, use Retrieve:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/52.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/52-300x204.jpg" alt="5" width="300" height="204" class="aligncenter size-medium wp-image-2220" /></a></p>
<p>5. Now your Encryption settings should look something like this.  Encryption key is &#8220;Valid&#8221; and Transfer Key is &#8220;Present&#8221;:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/62.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/62-300x202.jpg" alt="6" width="300" height="202" class="aligncenter size-medium wp-image-2222" /></a></p>
<p>6. Now open up the Management Console again and you should should be able to add credentials under Client Access Credentials.  You might even see the old user name and password in there.  You will have to re-enter the password on it though:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/9.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/9-300x178.jpg" alt="9" width="300" height="178" class="aligncenter size-medium wp-image-2223" /></a></p>
<p>7. Now go back to your Deployment Group and find your client machine.  Click &#8220;Poll Now&#8221; and it should successfully poll impersonating using the credential you entered.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/7.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/7-300x177.jpg" alt="7" width="300" height="177" class="aligncenter size-medium wp-image-2227" /></a></p>
<p><a href="http://www.jasonsamuel.com/2013/02/12/appsense-management-console-crashes-when-trying-to-add-client-access-credentials/">AppSense Management Console crashes when trying to add Client Access Credentials</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/' rel='bookmark' title='How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense'>How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</a></li>
<li><a href='http://www.jasonsamuel.com/2011/08/09/getting-admin-access-on-a-sql-server-when-you-dont-know-the-sa-account-password/' rel='bookmark' title='Getting admin access on a SQL Server when you don&#8217;t know the SA account password'>Getting admin access on a SQL Server when you don&#8217;t know the SA account password</a></li>
<li><a href='http://www.jasonsamuel.com/2010/02/08/getting-firefox-to-pass-active-directory-credentials-to-sharepoint-2007/' rel='bookmark' title='Getting Firefox to pass Active Directory credentials to Sharepoint 2007'>Getting Firefox to pass Active Directory credentials to Sharepoint 2007</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/02/12/appsense-management-console-crashes-when-trying-to-add-client-access-credentials/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway</title>
		<link>http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway</link>
		<comments>http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 18:29:18 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix NetScaler]]></category>
		<category><![CDATA[acess gateway authentication]]></category>
		<category><![CDATA[citrix access gateway]]></category>
		<category><![CDATA[citrix agee]]></category>
		<category><![CDATA[citrix netscaler]]></category>
		<category><![CDATA[RADIUS]]></category>
		<category><![CDATA[TACACS]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2187</guid>
		<description><![CDATA[A lot of companies use RADIUS or TACACS authentication on a Netscaler for use with Access Gateway (AGEE) which is pretty secure. Sometimes you might have users that complain they can&#8217;t login via the Access Gateway. There are a few things you can do to troubleshoot authentication issues. I&#8217;m going to run through some screenshots [...]<p><a href="http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/">How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/' rel='bookmark' title='How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver'>How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></li>
<li><a href='http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/' rel='bookmark' title='Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors'>Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a></li>
<li><a href='http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/' rel='bookmark' title='Getting around Netscaler Client IP issues without having to use USIP'>Getting around Netscaler Client IP issues without having to use USIP</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>A lot of companies use RADIUS or TACACS authentication on a Netscaler for use with Access Gateway (AGEE) which is pretty secure.  Sometimes you might have users that complain they can&#8217;t login via the Access Gateway.  There are a few things you can do to troubleshoot authentication issues.  I&#8217;m going to run through some screenshots from a NS 9.3 device because that&#8217;s what I have in front of me at the moment but the same troubleshooting methods can apply to NS 10.x.</p>
<p><strong>Capturing AAA authentication traffic in real-time</strong><br />
1. SSH into the Netscaler, login with your admin credentials, then enter shell by typing:</p>
<p><code>shell</code></p>
<p>2. Now you want to capture the authentication in real time and see exactly what the error looks like.  This is handled by the AAA (Authentication, Authorization, and Auditing) on the Netscaler.  So type the following:</p>
<p><code>cat /tmp/aaad.debug</code></p>
<p>A successful authentication against the Access Gateway would look like this.  The user is named User1:</p>
<p><pre><code>usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/naaad.c[614]: 
process_kernel_socket call to authenticate
user :User1, vsid :414
Tue Feb&nbsp;&nbsp;5 09:53:53 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[138]: 
start_radius_auth attempting to auth User1 @ xxx.xxx.xxx.xxx
Tue Feb&nbsp;&nbsp;5 09:53:53 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[741]:
 process_radius radius accepts : User1
Tue Feb&nbsp;&nbsp;5 09:53:53 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[743]:
 process_radius extracted group string :(null)
Tue Feb&nbsp;&nbsp;5 09:53:53 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/naaad.c[1466]: 
send_accept sending accept to kernel for : User1</code></pre></p>
<p>and an unsuccessful authentication would look like this.  The user is named User2:</p>
<p><pre><code>Tue Feb&nbsp;&nbsp;5 09:50:11 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/naaad.c[614]: 
process_kernel_socket call to authenticate
user :User2, vsid :414
Tue Feb&nbsp;&nbsp;5 09:50:11 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[138]:
 start_radius_auth attempting to auth User2 @ xxx.xxx.xxx.xxx
Tue Feb&nbsp;&nbsp;5 09:50:11 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[788]:
 process_radius radius rejects : User2
Tue Feb&nbsp;&nbsp;5 09:50:11 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[138]:
 start_radius_auth attempting to auth User2 @ xxx.xxx.xxx.xxx
Tue Feb&nbsp;&nbsp;5 09:50:14 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[731]:
 process_radius retransmit radius packet
Tue Feb&nbsp;&nbsp;5 09:50:17 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[731]:
 process_radius retransmit radius packet
Tue Feb&nbsp;&nbsp;5 09:50:20 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[778]: 
process_radius rad_continue_send_request:No valid RADIUS responses received
Tue Feb&nbsp;&nbsp;5 09:50:20 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[785]:
 process_radius unknown return value from rad_continue_send_request :-1
Tue Feb&nbsp;&nbsp;5 09:50:20 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/radius_drv.c[788]:
 process_radius radius rejects : User2
Tue Feb&nbsp;&nbsp;5 09:50:20 2013
/usr/home/build/rs_93/usr.src/usr.bin/nsaaad/../../netscaler/aaad/naaad.c[1562]:
 send_reject sending reject to kernel for : User2
Tue Feb&nbsp;&nbsp;5 09:50:23 2013
lwagent.c[1107]: main EV_DEBUG: handle time out</code></pre></p>
<p>you can see very clearly that the authentication server has denied access.  This points to an issue on the authentication server.  To stop the capture, just hit Ctrl + Z.</p>
<p><strong>Viewing the ns.log using Syslog Viewer</strong><br />
1. You can look at all the failed logins in the ns.log.  In the Netscaler admin console/GUI, go to System > Auditing and click the &#8220;Syslog messages&#8221; button:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/11.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/11-300x225.jpg" alt="1" width="300" height="225" class="aligncenter size-medium wp-image-2188" /></a></p>
<p>2. Select the AAA module and then double click each ns.log file.  You will immediately see all the &#8220;LOGIN_FAILED&#8221; event types as you go through each ns.log (these are the logs stored at /var/log on the Netscaler).  Pay attention to the message, it will tell you why the authentication attempt failed.  As you can see in this example, the authentication server is the problem and is denying access:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/21.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/21-300x190.jpg" alt="2" width="300" height="190" class="aligncenter size-medium wp-image-2189" /></a></p>
<p><strong>Running a Trace</strong><br />
1. Lastly you can run a network capture/trace when users are experiencing the issue.  You can do this via the console/GUI easily by going to System > Diagnostics and clicking on &#8220;Start new trace&#8221;:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/31.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/31-300x232.jpg" alt="3" width="300" height="232" class="aligncenter size-medium wp-image-2190" /></a></p>
<p>2. Set the packet size to 0 and hit Start:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/41.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/41-300x224.jpg" alt="4" width="300" height="224" class="aligncenter size-medium wp-image-2191" /></a></p>
<p>3. Stop the trace once you feel you have enough traffic captured:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/51.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/51-300x225.jpg" alt="5" width="300" height="225" class="aligncenter size-medium wp-image-2192" /></a></p>
<p>4. Download the nstrace .cap file and you can open it in Wireshark for further analysis:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/61.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/61-300x149.jpg" alt="6" width="300" height="149" class="aligncenter size-medium wp-image-2193" /></a></p>
<p>Hope this helps some of you.  Let me know if you have any other methods of troubleshooting authentication issues you would like to share.  LDAP troubleshooting is easier since the Netscaler can give you a lot more detail as to what is failing.  RADIUS and TACACS is a little trickier since you have something in the middle to troubleshoot but the steps above should give you enough to tell you if the problem resides on the Netscaler or on the authentication server.  </p>
<p><a href="http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/">How to troubleshoot RADIUS or TACACS authentication issues on a Netscaler/Access Gateway</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/' rel='bookmark' title='How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver'>How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></li>
<li><a href='http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/' rel='bookmark' title='Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors'>Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a></li>
<li><a href='http://www.jasonsamuel.com/2010/07/16/getting-around-netscaler-client-ip-issues-without-having-to-use-usip/' rel='bookmark' title='Getting around Netscaler Client IP issues without having to use USIP'>Getting around Netscaler Client IP issues without having to use USIP</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/02/05/how-to-troubleshoot-radius-or-tacacs-authentication-issues-on-a-netscaler-access-gateway/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to launch multiple sessions of a XenApp 6.5 application without stealing the original session</title>
		<link>http://www.jasonsamuel.com/2013/02/05/how-to-launch-multiple-sessions-of-a-xenapp-6-5-application-without-stealing-the-original-session/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-launch-multiple-sessions-of-a-xenapp-6-5-application-without-stealing-the-original-session</link>
		<comments>http://www.jasonsamuel.com/2013/02/05/how-to-launch-multiple-sessions-of-a-xenapp-6-5-application-without-stealing-the-original-session/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 17:04:24 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Citrix XenDesktop]]></category>
		<category><![CDATA[citrix multiple sessions]]></category>
		<category><![CDATA[citrix web interface]]></category>
		<category><![CDATA[citrix xenapp]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2170</guid>
		<description><![CDATA[If you have an application that requires more that one session per user, as in they want 2 sessions open to the same application concurrently, there are a few things you need to do. You have run through all these steps. Otherwise you&#8217;ll be left scratching your head trying to figure out why the 2nd [...]<p><a href="http://www.jasonsamuel.com/2013/02/05/how-to-launch-multiple-sessions-of-a-xenapp-6-5-application-without-stealing-the-original-session/">How to launch multiple sessions of a XenApp 6.5 application without stealing the original session</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/10/08/xenapp-applications-wont-launch-in-a-pvs-environment-with-multiple-network-interfaces/' rel='bookmark' title='XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces'>XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces</a></li>
<li><a href='http://www.jasonsamuel.com/2012/09/10/how-to-force-a-citrix-xenapp-application-to-open-in-a-custom-size-window/' rel='bookmark' title='How to force a Citrix XenApp application to open in a custom size window'>How to force a Citrix XenApp application to open in a custom size window</a></li>
<li><a href='http://www.jasonsamuel.com/2012/01/05/how-to-fix-pass-through-authentication-the-windows-2008-logon-screen-on-xenapp-6-5web-interface-5-4-using-citrix-receiver/' rel='bookmark' title='How to fix pass-through authentication &amp; the Windows 2008 logon screen on XenApp 6.5/Web Interface 5.4 using Citrix Receiver'>How to fix pass-through authentication &#038; the Windows 2008 logon screen on XenApp 6.5/Web Interface 5.4 using Citrix Receiver</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>If you have an application that requires more that one session per user, as in they want 2 sessions open to the same application concurrently, there are a few things you need to do.  You have run through all these steps.  Otherwise you&#8217;ll be left scratching your head trying to figure out why the 2nd session keeps stealing the 1st session and you only get 1 application window open. <img src='http://www.jasonsamuel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>1. Verify the app is set to allow multiple sessions.  By default &#8220;Allow only one instance of application for each user&#8221; is unchecked.  Leave it like that.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/1.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/1-300x232.jpg" alt="1" width="300" height="232" class="aligncenter size-medium wp-image-2171" /></a></p>
<p>2. Log into your Web Interfaces and right click on your XenApp Web Site.  Then click Workspace Control.  Make sure the Reconnect Button is set to &#8220;Allow users to customize&#8221;.  This allows the select users who need concurrent application sessions to modify their settings without having to impact the rest of your users.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/2.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/2-300x294.jpg" alt="2" width="300" height="294" class="aligncenter size-medium wp-image-2174" /></a></p>
<p>3. Verify Remote Desktop Session Host on your XenApp servers is set to allow more than 1 session.  Most people forget this one since it&#8217;s not really a Citrix setting.  Go to Start > All Programs > Administrative Tools > Remote Desktop Services > Remote Desktop Session Host Configuration.  Double click on &#8220;Restrict each user to a single session&#8221;:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/3.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/3-300x245.jpg" alt="3" width="300" height="245" class="aligncenter size-medium wp-image-2178" /></a></p>
<p>and under the &#8220;General&#8221; tab, uncheck &#8220;Restrict each user to a single session&#8221;:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/4.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/4-259x300.jpg" alt="4" width="259" height="300" class="aligncenter size-medium wp-image-2179" /></a></p>
<p>4. Have the user login to the Web Interface.  Have them click Settings in the top right and uncheck the &#8220;Reconnect&#8221; option.  Then hit Save:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/5.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/5-300x124.jpg" alt="5" width="300" height="124" class="aligncenter size-medium wp-image-2183" /></a></p>
<p>5. Now have the user try to launch 2 sessions of the same app one right after another.  You should have 2 sessions launch now.  Here is an example with Notepad:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2013/02/6.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2013/02/6-300x105.jpg" alt="6" width="300" height="105" class="aligncenter size-medium wp-image-2181" /></a></p>
<p><a href="http://www.jasonsamuel.com/2013/02/05/how-to-launch-multiple-sessions-of-a-xenapp-6-5-application-without-stealing-the-original-session/">How to launch multiple sessions of a XenApp 6.5 application without stealing the original session</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/10/08/xenapp-applications-wont-launch-in-a-pvs-environment-with-multiple-network-interfaces/' rel='bookmark' title='XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces'>XenApp applications won&#8217;t launch in a PVS environment with multiple network interfaces</a></li>
<li><a href='http://www.jasonsamuel.com/2012/09/10/how-to-force-a-citrix-xenapp-application-to-open-in-a-custom-size-window/' rel='bookmark' title='How to force a Citrix XenApp application to open in a custom size window'>How to force a Citrix XenApp application to open in a custom size window</a></li>
<li><a href='http://www.jasonsamuel.com/2012/01/05/how-to-fix-pass-through-authentication-the-windows-2008-logon-screen-on-xenapp-6-5web-interface-5-4-using-citrix-receiver/' rel='bookmark' title='How to fix pass-through authentication &amp; the Windows 2008 logon screen on XenApp 6.5/Web Interface 5.4 using Citrix Receiver'>How to fix pass-through authentication &#038; the Windows 2008 logon screen on XenApp 6.5/Web Interface 5.4 using Citrix Receiver</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2013/02/05/how-to-launch-multiple-sessions-of-a-xenapp-6-5-application-without-stealing-the-original-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BGInfo for Windows 7 VMs running in Citrix PVS XenDesktop environments</title>
		<link>http://www.jasonsamuel.com/2012/12/27/bginfo-for-windows-7-vms-running-in-citrix-pvs-xendesktop-environments/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bginfo-for-windows-7-vms-running-in-citrix-pvs-xendesktop-environments</link>
		<comments>http://www.jasonsamuel.com/2012/12/27/bginfo-for-windows-7-vms-running-in-citrix-pvs-xendesktop-environments/#comments</comments>
		<pubDate>Thu, 27 Dec 2012 23:29:29 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix Provisioning Services]]></category>
		<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Citrix XenDesktop]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[bginfo]]></category>
		<category><![CDATA[citrix pvs]]></category>
		<category><![CDATA[citrix vdi]]></category>
		<category><![CDATA[citrix xendesktop]]></category>
		<category><![CDATA[pvs]]></category>
		<category><![CDATA[vdi bginfo]]></category>
		<category><![CDATA[windows 7 bginfo]]></category>
		<category><![CDATA[windows 7 vm bginfo]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2094</guid>
		<description><![CDATA[If you&#8217;re running a Citrix VDI implementation using Provisioning Services (PVS) and XenDesktop, you need a way for your help desk and even the end user to easily identify the VM and pertinent system info easily. BGInfo is the tried and true way of doing this in a corporate environment. A simple overlay for the [...]<p><a href="http://www.jasonsamuel.com/2012/12/27/bginfo-for-windows-7-vms-running-in-citrix-pvs-xendesktop-environments/">BGInfo for Windows 7 VMs running in Citrix PVS XenDesktop environments</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/07/26/sep-12-not-working-with-pvs-6-1-and-windows-7-xendesktop-vms/' rel='bookmark' title='SEP 12 not working with PVS 6.1 and Windows 7 XenDesktop VMs'>SEP 12 not working with PVS 6.1 and Windows 7 XenDesktop VMs</a></li>
<li><a href='http://www.jasonsamuel.com/2012/11/08/citrix-pvs-server-vdisk-is-locked-0xffff8017-error-as-vms-boot-up/' rel='bookmark' title='Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up'>Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up</a></li>
<li><a href='http://www.jasonsamuel.com/2012/06/26/how-to-install-and-configure-pvs-6-1-with-xendesktop-5-6/' rel='bookmark' title='How to install and configure PVS 6.1 with XenDesktop 5.6'>How to install and configure PVS 6.1 with XenDesktop 5.6</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re running a Citrix VDI implementation using Provisioning Services (PVS) and XenDesktop, you need a way for your help desk and even the end user to easily identify the VM and pertinent system info easily.  BGInfo is the tried and true way of doing this in a corporate environment.  A simple overlay for the wallpaper.  In a PVS environment, a lot of the info you would need to grab from a physical desktop are useless since it all goes away after the VM reboots and you&#8217;re back to a clean image.  A lot of companies use BGInfo to quickly see troubleshooting data without having to use a management tool or agent.  With PVS VMs, troubleshooting itself is rarely necessary.  You just tell the user to reboot and they&#8217;re back to a clean slate.  So BGInfo can be leveraged as more of an identification tool for when the user calls in than a troubleshooting tool.  Download BGInfo from Microsoft here:</p>
<p><a href="http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx" target="_blank">http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx</a></p>
<p>I did a little custom BGInfo configuration to capture just the important pieces of info for my Windows 7 PVS XenDesktop environment.  Of course this might differ for your environment and you might need more fields but this is a good starting point:</p>
<p>1. <strong>A Title</strong> &#8211; let&#8217;s the user know they are on a Windows 7 VM and not a workstation.  Users can get confused when switching back and forth.</p>
<p>2. <strong>Host name</strong> &#8211; for when the help desk asks the user the name of their VM</p>
<p>3. <strong>IP addresses</strong> &#8211; both the streaming NIC and LAN NIC IPs.  Not really necessary in a PVS environment obviously, but nice to have it displayed.</p>
<p>4. <strong>User Name</strong> &#8211; good to know what account the user is logging in with</p>
<p>5. <strong>Boot Time</strong> &#8211; very important to know in a PVS environment.  You know those calls you get saying a person&#8217;s desktop looks completely different from everyone else and after you investigate a bit you figure out they&#8217;re on an old version of the image because they haven&#8217;t rebooted in forever.  Yeah, this will help with that.</p>
<p>6. <strong>Write Cache free disk space left</strong> &#8211; another very important piece of info in a PVS environment.  Once the write cache gets filled up, the VM is done and users start calling in.  Good to know how much the user has left.  Also a good way to gauge if your allocated write cache is truly enough for your environment or if you need to think about growing it.</p>
<p>So here&#8217;s how my desktop looks, very simple and clean:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/1.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/1-300x225.jpg" alt="1" width="300" height="225" class="aligncenter size-medium wp-image-2095" /></a></p>
<p>I like to bake BGInfo into my images.  I just create a folder called <code>c:\BGInfo</code> and copy Bginfo.exe in there.  I&#8217;ll get to the other 2 files in a second.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/2.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/2-300x135.jpg" alt="2" width="300" height="135" class="aligncenter size-medium wp-image-2097" /></a></p>
<p>Run Bginfo.exe and you get all the default stuff, delete it all and start clean adding just the stuff you need.  Here&#8217;s how mine looks:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/3.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/3-300x224.jpg" alt="3" width="300" height="224" class="aligncenter size-medium wp-image-2098" /></a></p>
<p>Don&#8217;t forget to set your settings under <code>Position &gt; Multiple Monitor Configuration</code> for people with more than 1 monitor.  I like mine to just be on the primary screen:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/4.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/4-300x250.jpg" alt="4" width="300" height="250" class="aligncenter size-medium wp-image-2099" /></a></p>
<p>And under <code>Desktops</code>, you&#8217;ll want to change it for pretty much anyone that hits the VM using any method.  I set mine to &#8220;Update this wallpaper&#8221; for all scenarios and prompt if it has an issue setting it (so I can investigate if anyone reports an issue):</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/5.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/5-300x296.jpg" alt="5" width="300" height="296" class="aligncenter size-medium wp-image-2100" /></a></p>
<p>Then go to File > Save As and save your configuration file.  It will be saved with the .bgi extension.</p>
<p>That&#8217;s it for the implementation side.  For PVS though, you&#8217;re going to have a lot of different NICs and you don&#8217;t want a bunch of &#8220;0.0.0.0&#8243; IPs being displayed.  I just wanted my streaming IP and LAN IP displayed.  So under Fields click Custom:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/6.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/6-300x208.jpg" alt="6" width="300" height="208" class="aligncenter size-medium wp-image-2101" /></a></p>
<p>and then click New.  You will need to create a new field called &#8220;IP Addresses&#8221; and do a WMI query to pull the IPs of only the active NICs.  I used the following query:</p>
<p><code>SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE</code></p>
<p>Which will look like this when you are entering and Evaluating it:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/7.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/7-300x201.jpg" alt="7" width="300" height="201" class="aligncenter size-medium wp-image-2102" /></a></p>
<p>Make sure to name the Identifier when you are saving it:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/8.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/8-300x192.jpg" alt="8" width="300" height="192" class="aligncenter size-medium wp-image-2103" /></a></p>
<p>Then just add the field and hit apply and you should see both IPs appear.</p>
<p>Now the last part is the Write Cache free disk space percentage.  I could not find a way to do it from just a simple WMI Query.  So I wrote this little .vbs script and stuck it in <code>c:\BGInfo</code>.  As you can see, my write cache drive is the Z: so you will need to change the code to whatever drive letter you are using:</p>
<p><pre><code>&#039; Display Write Cache percentage free (z:)
&#039; Written by Jason Samuel (www.jasonsamuel.com) for use with BGInfo 

Set objWMIService = GetObject(&quot;winmgmts:\\.\root\cimv2&quot;)

Set colDisks = objWMIService.ExecQuery _
&nbsp;&nbsp;&nbsp;&nbsp;(&quot;Select * From Win32_LogicalDisk Where DeviceID = &#039;z:&#039;&quot;)

For Each objDisk in colDisks
&nbsp;&nbsp;&nbsp;&nbsp;intFreeSpace = objDisk.FreeSpace
&nbsp;&nbsp;&nbsp;&nbsp;intTotalSpace = objDisk.Size
&nbsp;&nbsp;&nbsp;&nbsp;pctFreeSpace = intFreeSpace / intTotalSpace
&nbsp;&nbsp;&nbsp;&nbsp;Echo FormatPercent(pctFreeSpace)
Next</code></pre></p>
<p>Then just create a new Field and set the VB Script for it:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/9.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/9-300x196.jpg" alt="9" width="300" height="196" class="aligncenter size-medium wp-image-2104" /></a></p>
<p>Add the field to your config and hit Apply and it should show the percentage free on your desktop.  Now just create a group policy to run it every 5 min.  Or you can schedule a task to run it every 5 minutes in the VM itself.  I like to use these switches:</p>
<p><code>/accepteula /timer:0 /log:&quot;C:\BGInfo\BGInfo.log&quot;</code></p>
<p>If you want BGInfo to run just once, it is very easy to do via scheduled task, GPO, login script, registry, or even adding it as a shortcut under Startup.  Just Google it, tons of ways out there.  But if you want it to run every 5 minutes and refresh the info, the only way to do it is via GPO.  If you bake in into a local scheduled task in the image like I mentioned above, it will not work in a provisioned environment.  It will attempt to run under the Administrator account of the maintenance image.  So if you baked it in as &#8220;VM0001\Administrator&#8221;, a provisioned VM named VM0054 will not have this account.  This will cause the scheduled task to fail.  It won&#8217;t run under the System account either.  The System account won&#8217;t run interactively.  The task will start but stay running indefinitely and you will get an error like this in the BGInfo log:</p>
<p><em>An error occured while attempting to set the new desktop settings.<br />
Please ensure the current user has rights to change desktop settings:<br />
This operation requires an interactive window station.</em></p>
<p>To get around all this, use group policy.  By default group policy will run the scheduled task under “<code>%LogonDomain%\%LogonUser%</code>” which is exactly what you want.  Here is how my group policy looks:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/10.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/10-300x204.jpg" alt="10" width="300" height="204" class="aligncenter size-medium wp-image-2123" /></a></p>
<p>Notice I have 2 triggers.  The first trigger is to run BGInfo at login and update the wallpaper.  But when opening a VDI session from a Win 7 host, it may open in Desktop Viewer but not in full screen.  When the user goes full screen, the desktop wallpaper will not resize automatically and instead appear as tiled.  So to get around this, I have a second trigger that runs BGInfo again 30 seconds into the session and runs every 5 min from then on.  Hopefully within that 30 seconds, the user will have gone full screen and BGInfo will get a chance to run at the resolution the user will use throughout their session.  One thing to note, I suggest adding a 3rd trigger that runs BGInfo on workstation unlock like this:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/12.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/12-300x74.jpg" alt="12" width="300" height="74" class="aligncenter size-medium wp-image-2132" /></a></p>
<p>This is very useful in VDI when you go from a Desktop to an iPad for example.  Upon login, it will immediately update the wallpaper resolution and run indefinitely every 5 minutes.  This is a lot of triggers but it covers all your bases.  I really wish BGInfo had a &#8220;Fit&#8221; setting for the wallpaper like Windows 7 has by default.  It would avoid this whole resize mess.  Right now BGInfo 4.16 only supports Center, Tile, and Stretch for the wallpaper.</p>
<p>Also if you decide to store the Bitmap BGInfo creates in a central place like <code>c:\BGInfo</code>, make sure Users and/or Authenticated Users have Full Control to <code>c:\BGInfo</code> and all child objects and change the location the .bmp is stored to under this folder.  Othwerwise the background may not change for users that are not admins on the VMs:  </p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/11.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/11-300x252.jpg" alt="11" width="300" height="252" class="aligncenter size-medium wp-image-2125" /></a></p>
<p>Lastly, you might get an error like below, but the wallpaper does in fact update.<br />
<em><br />
An error occured opening the Default Desktop registry key.<br />
Please ensure the current user has rights to change Logon Desktop settings:<br />
Access is denied.</em></p>
<p>This is because the user is not an admin and does not have rights to change the Logon Desktop settings.  Either give permissions to do this or go back into your .bgi and uncheck the &#8220;Display an error when user permissions prevent a Logon Desktop from being modified&#8221; option that you had set before for troubleshooting purposes under the Desktops settings in BGInfo.  Then the popup will stop.</p>
<p>One thing I&#8217;ve been trying to do is brand BGInfo with my company logo.  But I don&#8217;t want a big white box around it like when you use a jpg.  I want to use a transparent gif.  BGInfo does not support this from all the things I&#8217;ve tried so far.  For example, here is the Amazon logo as a transparent gif:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/amazon_logo_transparent.gif"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/amazon_logo_transparent.gif" alt="amazon_logo_transparent" width="250" height="64" class="aligncenter size-full wp-image-2134" /></a></p>
<p>Looks great on a white background but I want to use it with the standard Windows 7 wallpaper which has a gradient.  It looks pretty awful because BGInfo flattens it somehow when creating the bmp causing there to be a black background around the logo:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/13.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/13-300x215.jpg" alt="13" width="300" height="215" class="aligncenter size-medium wp-image-2137" /></a></p>
<p>But if your company chooses to use a standard wallpaper with no gradient, like a solid white background for example, just edit the background of your logo to match the color of the background and save it as a jpg.  Add it to BGInfo and it will look perfect.  Here is the Amazon logo (jpg with white background) with BGInfo set to white for the background wallpaper:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/12/14.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/12/14-300x227.jpg" alt="14" width="300" height="227" class="aligncenter size-medium wp-image-2140" /></a></p>
<p>Hope this helps.  Let me know if you have any questions or suggestions for custom fields to add that might be handy in a PVS XenDesktop environment. </p>
<p><a href="http://www.jasonsamuel.com/2012/12/27/bginfo-for-windows-7-vms-running-in-citrix-pvs-xendesktop-environments/">BGInfo for Windows 7 VMs running in Citrix PVS XenDesktop environments</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/07/26/sep-12-not-working-with-pvs-6-1-and-windows-7-xendesktop-vms/' rel='bookmark' title='SEP 12 not working with PVS 6.1 and Windows 7 XenDesktop VMs'>SEP 12 not working with PVS 6.1 and Windows 7 XenDesktop VMs</a></li>
<li><a href='http://www.jasonsamuel.com/2012/11/08/citrix-pvs-server-vdisk-is-locked-0xffff8017-error-as-vms-boot-up/' rel='bookmark' title='Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up'>Citrix PVS server Vdisk is locked 0xffff8017 error as VMs boot up</a></li>
<li><a href='http://www.jasonsamuel.com/2012/06/26/how-to-install-and-configure-pvs-6-1-with-xendesktop-5-6/' rel='bookmark' title='How to install and configure PVS 6.1 with XenDesktop 5.6'>How to install and configure PVS 6.1 with XenDesktop 5.6</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2012/12/27/bginfo-for-windows-7-vms-running-in-citrix-pvs-xendesktop-environments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</title>
		<link>http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense</link>
		<comments>http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/#comments</comments>
		<pubDate>Mon, 10 Dec 2012 16:40:07 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[AppSense]]></category>
		<category><![CDATA[Citrix Provisioning Services]]></category>
		<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Citrix XenDesktop]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Server 2008]]></category>
		<category><![CDATA[appsense]]></category>
		<category><![CDATA[group policy]]></category>
		<category><![CDATA[local group policy]]></category>
		<category><![CDATA[mandatory profile]]></category>
		<category><![CDATA[server 2008 r2]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=1935</guid>
		<description><![CDATA[You really just want a clean mandatory profile if you are deploying AppSense on Windows 7 or Server 2008 R2. The vast majority of companies don&#8217;t need to customize it. When you get into customization, you&#8217;re going to go through a lot of trouble trying to clean up the profile. Save yourself the trouble. The [...]<p><a href="http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/">How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2009/11/13/whats-new-and-actually-useful-in-server-2008-r2/' rel='bookmark' title='What&#8217;s new and actually useful in Server 2008 R2?'>What&#8217;s new and actually useful in Server 2008 R2?</a></li>
<li><a href='http://www.jasonsamuel.com/2012/08/15/adding-websites-to-ie-zones-on-a-xenapp-server-using-local-group-policy/' rel='bookmark' title='Adding websites to IE zones on a XenApp server using local group policy'>Adding websites to IE zones on a XenApp server using local group policy</a></li>
<li><a href='http://www.jasonsamuel.com/2011/08/02/using-firefox-in-an-environment-with-roaming-profiles/' rel='bookmark' title='Using Firefox in an environment with roaming profiles'>Using Firefox in an environment with roaming profiles</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>You really just want a clean mandatory profile if you are deploying AppSense on Windows 7 or Server 2008 R2.  The vast majority of companies don&#8217;t need to customize it.  When you get into customization, you&#8217;re going to go through a lot of trouble trying to clean up the profile.  Save yourself the trouble.  The best thing to do is have a clean and slim mandatory profile that can be applied to any server or desktop in your environment and leverage AppSense itself to do everything else.</p>
<p>So to build a clean mandatory profile:</p>
<p>1. Login to your Windows 7 or Server 2008 R2 box with a local admin account or an domain administrator account, doesn&#8217;t matter.  I&#8217;m going to use Server 2008 R2 for these screenshots.</p>
<p>2. Start > Control Panel > click User Accounts > click Configure advanced user profile properties</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/1.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/1-300x118.jpg" alt="" title="1" width="300" height="118" class="aligncenter size-medium wp-image-1938" /></a></p>
<p>3. Click the Default Profile and hit Copy Too&#8230;</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/2.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/2-288x300.jpg" alt="" title="2" width="288" height="300" class="aligncenter size-medium wp-image-1939" /></a></p>
<p>4. Copy the profile anywhere you like, I chose &#8220;<code>c:\mandatoryprofile.v2</code>&#8221;.  Usually you want your mandatory profile on a file server or DFS share where it is easily accessible but I am just leaving it local for this example.  I specified v2 since I am creating a profile for Server 2008 R2.  I changed the &#8220;Permitted to use&#8221; to &#8220;Everyone&#8221; so all users get NTFS rights to use it.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/3.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/3-300x181.jpg" alt="" title="3" width="300" height="181" class="aligncenter size-medium wp-image-1940" /></a></p>
<p>5. Navigate to <code>c:\mandatoryprofile.v2</code> and go to Folder and search options</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/4.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/4-300x214.jpg" alt="" title="4" width="300" height="214" class="aligncenter size-medium wp-image-1941" /></a></p>
<p>6. Uncheck &#8220;Hide protected operating system files&#8221;</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/5.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/5-250x300.jpg" alt="" title="5" width="250" height="300" class="aligncenter size-medium wp-image-1942" /></a></p>
<p>7. Now you will 5 temp files you do not need in the mandatory profile. Delete them.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/6.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/6-300x192.jpg" alt="" title="6" width="300" height="192" class="aligncenter size-medium wp-image-1943" /></a><br />
8. The ntuser.dat should be around 512 KB on a clean Server 2008 R2 box</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/7.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/7-300x158.jpg" alt="" title="7" width="300" height="158" class="aligncenter size-medium wp-image-1944" /></a></p>
<p>9. Now rename ntuser.dat to ntuser.man</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/8.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/8-300x162.jpg" alt="" title="8" width="300" height="162" class="aligncenter size-medium wp-image-1945" /></a></p>
<p>10. From here, you would normally setup a domain level group policy and apply it to the OU that has the servers or desktops you want to use the mandatory profile on.  Since this is an example, I am going to edit the local group policy instead.  </p>
<p><strong>Go to Start > Run > and type gpedit.msc.  </strong></p>
<p>Then navigate to:</p>
<p><strong>Local Computer Policy > Computer Configuration > Administrative Templates > System > User Profiles</strong></p>
<p>There will be 3 items we need to change to &#8220;Enabled&#8221;:</p>
<p>-Delete cached copies of roaming profiles<br />
-Set roaming profile path for all users logging on this computer<br />
-Prevent Roaming Profile changes from propagating to the server</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/9.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/9-300x238.jpg" alt="" title="9" width="300" height="238" class="aligncenter size-medium wp-image-1946" /></a></p>
<p>11. For &#8220;Set roaming profile path for all users logging on this computer&#8221;, you need to put a UNC path to the share that holds your mandatory profile.  So since it&#8217;s on the local server in this example, I will do:</p>
<p><code>\\servername\mandatoryprofile</code></p>
<p>Notice I did not add &#8220;.v2&#8243; at the end.  Windows will automatically look for it as the users login.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/10.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/10-300x273.jpg" alt="" title="10" width="300" height="273" class="aligncenter size-medium wp-image-1947" /></a></p>
<p>12.  Once you&#8217;ve made your changes, it should look like this:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/11.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/11-300x254.jpg" alt="" title="11" width="300" height="254" class="aligncenter size-medium wp-image-1948" /></a></p>
<p>13. Now navigate to:</p>
<p><strong>Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Profiles</strong></p>
<p>There will be 2 items we need to change to &#8220;Enabled&#8221;:</p>
<p>-Use mandatory profiles on the RD Session Host server<br />
-Set path for Remote Desktop Services Roaming User Profile</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/12.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/12-300x252.jpg" alt="" title="12" width="300" height="252" class="aligncenter size-medium wp-image-1949" /></a></p>
<p>14. For &#8220;Set path for Remote Desktop Services Roaming User Profile&#8221;, you need toy need to put a UNC path to the share that holds your mandatory profile just like the previous setting.</p>
<p><code>\\servername\mandatoryprofile</code></p>
<p>Notice again I did not add &#8220;.v2&#8243; at the end.  Windows will automatically look for it as the users login.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/13.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/13-300x274.jpg" alt="" title="13" width="300" height="274" class="aligncenter size-medium wp-image-1950" /></a></p>
<p>15. Once you&#8217;ve made your changes, it should look like this:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/14.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/14-300x90.jpg" alt="" title="14" width="300" height="90" class="aligncenter size-medium wp-image-1951" /></a></p>
<p>16. Now navigate to the mandatory profiles desktop and add a text file.  So in this example &#8220;<code>c:\mandatoryprofile.v2\Desktop</code>&#8221;. I&#8217;ve created a file called &#8220;This is a mandatory profile in action.txt&#8221;.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/15.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/15-300x164.jpg" alt="" title="15" width="300" height="164" class="aligncenter size-medium wp-image-1952" /></a></p>
<p>17. Now right click on the mandatoryprofile.v2 folder and share it out.  Make sure &#8220;Everyone&#8221; has access:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/16.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/16-300x210.jpg" alt="" title="16" width="300" height="210" class="aligncenter size-medium wp-image-1953" /></a></p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/17.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/17-232x300.jpg" alt="" title="17" width="232" height="300" class="aligncenter size-medium wp-image-1954" /></a></p>
<p>18. Now RDP into the server using any account you like.  You will get the mandatory profile and you will see the text file we had created earlier on the desktop.</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/10/18.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/10/18-300x273.jpg" alt="" title="18" width="300" height="273" class="aligncenter size-medium wp-image-1955" /></a></p>
<p><a href="http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/">How to create a Windows 7 or Server 2008 R2 mandatory profile for AppSense</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2009/11/13/whats-new-and-actually-useful-in-server-2008-r2/' rel='bookmark' title='What&#8217;s new and actually useful in Server 2008 R2?'>What&#8217;s new and actually useful in Server 2008 R2?</a></li>
<li><a href='http://www.jasonsamuel.com/2012/08/15/adding-websites-to-ie-zones-on-a-xenapp-server-using-local-group-policy/' rel='bookmark' title='Adding websites to IE zones on a XenApp server using local group policy'>Adding websites to IE zones on a XenApp server using local group policy</a></li>
<li><a href='http://www.jasonsamuel.com/2011/08/02/using-firefox-in-an-environment-with-roaming-profiles/' rel='bookmark' title='Using Firefox in an environment with roaming profiles'>Using Firefox in an environment with roaming profiles</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2012/12/10/how-to-create-a-windows-7-or-server-2008-r2-mandatory-profile-for-appsense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</title>
		<link>http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors</link>
		<comments>http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/#comments</comments>
		<pubDate>Mon, 12 Nov 2012 18:16:33 +0000</pubDate>
		<dc:creator>Jason Samuel</dc:creator>
				<category><![CDATA[Citrix NetScaler]]></category>
		<category><![CDATA[Citrix XenApp]]></category>
		<category><![CDATA[Citrix XenDesktop]]></category>
		<category><![CDATA[access gateway customization]]></category>
		<category><![CDATA[access gateway skin]]></category>
		<category><![CDATA[access gateway theme]]></category>
		<category><![CDATA[citrix access gateway]]></category>
		<category><![CDATA[citrix access gateway custom theme]]></category>
		<category><![CDATA[citrix web interface custom theme]]></category>
		<category><![CDATA[citrix web interface customization]]></category>
		<category><![CDATA[web interface customization]]></category>
		<category><![CDATA[web interface skin]]></category>
		<category><![CDATA[web interface theme]]></category>

		<guid isPermaLink="false">http://www.jasonsamuel.com/?p=2034</guid>
		<description><![CDATA[If you have a need to quickly brand your Netscaler Access Gateway and Web Interface 5.4 with your company colors and logo, it&#8217;s pretty easy and can be done in less than 30 minutes if you are under a deadline. It&#8217;s easy in StoreFront too, just don&#8217;t have one in front of me right now [...]<p><a href="http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/">Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>

More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/' rel='bookmark' title='How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver'>How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></li>
<li><a href='http://www.jasonsamuel.com/2011/08/29/how-to-deploy-citrix-receiver-or-online-web-plugin-for-xenapp-6-5-on-web-interface-5-4/' rel='bookmark' title='How to Deploy Citrix Receiver or Online Web Plugin for XenApp 6.5 on Web Interface 5.4'>How to Deploy Citrix Receiver or Online Web Plugin for XenApp 6.5 on Web Interface 5.4</a></li>
<li><a href='http://www.jasonsamuel.com/2012/06/29/legacy-citrix-apps-not-launching-on-newer-web-interface-servers/' rel='bookmark' title='Legacy Citrix apps not launching on newer Web Interface servers'>Legacy Citrix apps not launching on newer Web Interface servers</a></li>
</ol>
</div>
]]></description>
				<content:encoded><![CDATA[<p>If you have a need to quickly brand your Netscaler Access Gateway and Web Interface 5.4 with your company colors and logo, it&#8217;s pretty easy and can be done in less than 30 minutes if you are under a deadline.  It&#8217;s easy in StoreFront too, just don&#8217;t have one in front of me right now to write about.  This is quick and dirty, you can do more work to match them up exactly but I just wanted to knock this out in 30 minutes.</p>
<p><strong>NETSCALER ACCESS GATEWAY</strong><br />
Just download one of these available themes Jeff Sani posted:</p>
<p><a href="http://blogs.citrix.com/2011/04/11/horizon-theme-for-citrix-netscaler/" target="_blank">http://blogs.citrix.com/2011/04/11/horizon-theme-for-citrix-netscaler/</a><br />
<a href="http://blogs.citrix.com/2012/06/19/symphony-theme-for-citrix-netscaler/" target="_blank">http://blogs.citrix.com/2012/06/19/symphony-theme-for-citrix-netscaler/</a><br />
<a href="http://blogs.citrix.com/2012/04/19/green-bubble-theme-for-citrix-netscaler/" target="_blank">http://blogs.citrix.com/2012/04/19/green-bubble-theme-for-citrix-netscaler/</a></p>
<p>I chose the Horizon theme because it matches WI 5.4 the closest.  Here&#8217;s what you need to do to implement it.  I did this on a Netscaler running NS 9.3 but 10.x will work too:</p>
<p>1. Download the Horizon.txt script and rename it to Horizon1.sh like Jeff says.  Then download Horizon1.gz.<br />
2. Now use WinSCP to copy both to your primary Netscaler to /var/vpn/themes<br />
3. Putty/SSH into the primary Netscaler, enter shell, and navigate to /var/vpn/themes<br />
4. Type:</p>
<p><code>sh Horizon1.sh</code></p>
<p>This script by Andre Perry does all the stuff Jeff says in the posts above.  Very nice Andre!  At this point you have deployed the theme.  Now to customize for your company.</p>
<p>5. Just change 3 files on the Netscaler:</p>
<p>/var/vpn/themes/Horizon1/ns_gui/vpn/images/Background.png &#8211; your company colors in the background.  I usually use 2 colors here.  Just play with the height of the colors in Photoshop to adjust and make them line up with the login box the way you want.</p>
<p>logo.jpg &#8211; Create it from scratch and drop it in /var/vpn/themes/Horizon1/ns_gui/vpn/images/</p>
<p>index.html &#8211; change the following:</p>
<p><pre><code>&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;logonBoxWidth&quot;&gt;
&lt;tr&gt;&lt;td colspan=&quot;3&quot; class=&#039;headertop&#039;&gt;&lt;span class=&#039;headerLabel&#039;&gt;NetScaler Access Gateway&lt;/span&gt;&lt;span class=&#039;headertm&#039;&gt;&lt;sup&gt;TM&lt;/sup&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;</code></pre></p>
<p>TO</p>
<p>    <pre><code>&nbsp;&nbsp;&lt;td&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src=&quot;/vpn/images/logo.jpg&quot;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;logonBoxWidth&quot;&gt;</code></pre></p>
<p>6. Now make sure to copy all 3 of these files to the flash (where everything is currently running from) here:</p>
<p>/netscaler/ns_gui/vpn/images/Background.png<br />
/netscaler/ns_gui/vpn/images/logo.jpg<br />
/netscaler/ns_gui/vpn/index.html</p>
<p>7. Refresh the Access Gateway page and your changes should appear there.  Sometimes you may need to clear your cache.  I use FireFox which is pretty good about it and I didn&#8217;t have to clear anything.  If you need to adjust anything, go ahead and do so now.  Just remember, after a reboot of your Netscaler anything you put in Flash at the paths in step 6 above will revert.  Stuff gets copied over from the /var folder in step 5 above.  So make sure you put your files there as well to prevent this.</p>
<p>8. Now login to your secondary Netscaler and perform all the same steps.  None of this stuff gets synched between devices.</p>
<p>Here is how my final product looks:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/11/14.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/11/14-300x231.jpg" alt="" title="Access Gateway with custom company logo and colors" width="300" height="231" class="aligncenter size-medium wp-image-2040" /></a></p>
<p><strong>WEB INTERFACE</strong><br />
Andrew Morgan has an excellent post here that goes pretty in depth:</p>
<p><a href="http://andrewmorgan.ie/2011/08/30/decrapifying-the-citrix-web-interface-5-4/" target="_blank">http://andrewmorgan.ie/2011/08/30/decrapifying-the-citrix-web-interface-5-4/</a></p>
<p>I needed something quick so I just modified 4 things under <code>c:\inetpub\wwwroot\Citrix\XenApp\media</code>:</p>
<p>1. CitrixXenApp.png and CitrixXenApp.gif &#8211; I changed this to my company logo<br />
2. HorizonBgTop.png &#8211; I went with solid white in Photoshop with this one<br />
3. HorizonBgBottom.png &#8211; I went with solid blue in Photoshop with this one<br />
4. HeaderGradient.png &#8211; Did a gradient in Photoshop using two of my company&#8217;s colors. This appears once you login along the top.</p>
<p>This located under <code>c:\inetpub\wwwroot\Citrix\XenApp\app_data\include</code>:<br />
5. fullStyle.inc &#8211;  I changed this to rip out that ugly HDX logo:</p>
<p><pre><code>.horizonPage #hdxLogo {
display: none;
}</code></pre></p>
<p>and this to give me a solid white background along the bottom:</p>
<p><pre><code>.horizonPage {
&nbsp;&nbsp;&nbsp;&nbsp;background: #ffffff url(&quot;../media/HorizonBgBottom.png&quot;) repeat-x left 325px;
}</code></pre></p>
<p>And this under <code>c:\Program Files (x86)\Citrix\Web Interface\5.4.0\languages</code>:<br />
6. accessplatform_strings.properties &#8211; I customized the text in this.  While playing with it I noticed it does support HTML just fine so I did this:</p>
<p><code>HorizonTagline=Your Windows 7 desktop and company apps on demand - from any PC, Mac, smartphone or tablet.&lt;br&gt;&lt;font size=&quot;2&quot;&gt;FOR SUPPORT: Help Desk at xxx-xxx-xxxx, Option 1 (toll free: xxx-xxx-xxxx) or xxxxxxx@xxxxx.com.&lt;/f&gt;</code></p>
<p>Done, upload all your files and you have a pretty nice simple company branded Web Interface.  You should change the &#8220;loggedoff&#8221; images that are greyed over to match when you get some time or you&#8217;ll see the default images there greyed over instead.  </p>
<p>Here is how my final product looks:</p>
<p><a href="http://www.jasonsamuel.com/wp-content/uploads/2012/11/22.jpg"><img src="http://www.jasonsamuel.com/wp-content/uploads/2012/11/22-300x230.jpg" alt="" title="Wen Interface with custom company logo and colors" width="300" height="230" class="aligncenter size-medium wp-image-2041" /></a></p>
<p><a href="http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/">Quick way to brand Access Gateway and Web Interface 5.4 with company logo and colors</a> is a post from: <a href="http://www.jasonsamuel.com">JasonSamuel.com</a></p>
<div class='yarpp-related-rss'>
<p>More of my posts you might like:<ol>
<li><a href='http://www.jasonsamuel.com/2012/04/10/how-to-setup-your-citrix-netscaler-access-gateway-and-web-interface-for-ipads-and-mobile-devices-that-use-citrix-receiver/' rel='bookmark' title='How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver'>How to setup your Citrix Netscaler (Access Gateway) and Web Interface for iPads and mobile devices that use Citrix Receiver</a></li>
<li><a href='http://www.jasonsamuel.com/2011/08/29/how-to-deploy-citrix-receiver-or-online-web-plugin-for-xenapp-6-5-on-web-interface-5-4/' rel='bookmark' title='How to Deploy Citrix Receiver or Online Web Plugin for XenApp 6.5 on Web Interface 5.4'>How to Deploy Citrix Receiver or Online Web Plugin for XenApp 6.5 on Web Interface 5.4</a></li>
<li><a href='http://www.jasonsamuel.com/2012/06/29/legacy-citrix-apps-not-launching-on-newer-web-interface-servers/' rel='bookmark' title='Legacy Citrix apps not launching on newer Web Interface servers'>Legacy Citrix apps not launching on newer Web Interface servers</a></li>
</ol></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jasonsamuel.com/2012/11/12/quick-way-to-brand-access-gateway-and-web-interface-5-4-with-company-logo-and-colors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: www.jasonsamuel.com @ 2013-05-19 09:20:25 by W3 Total Cache -->