// This is the script hosted on Google Drive to give summary on the main page.
Think IPM

Monday, June 27, 2016

Centralized policy definitions - Bad idea! ... with a remedy.

imageOn several occasion in the past few years (and twice in the past month, probably the result of interest in piloting Windows 10 and/or Office 2016), I noticed a very bad Microsoft idea being implemented in a client’s domain environment:  a central policy definitions store is created at


\\dns.domain.name\sysvol\dns.domain.name\Policies\PolicyDefinitions

and is populated with some collection of ADMX/ADML policy definition templates (in both recent cases copied from a Windows 10 machine of unknown vintage).

Doing this prevents *all* machines in the environment from which any policy editing is ever done (my XenApp  6.5 servers being just one example of such) from being able to use their own platform-specific, version-specific and custom policy definitions.  For my situation at these clients, any ADMX/ADML collection older or newer than the most current Windows 2008 R2 definitions is bad and/or confusing – I want to see all the policy settings that are applicable to the 2008 R2 XenApp servers, and none that aren’t – and anything other than the Microsoft Office policy definitions for the version installed on XenApp means that I (for example) can’t properly manage Office policies because they are seen by the policy editor as just “Extra Registry settings” that are not explained and cannot be modified.  Adding more policy definitions (e.g. for additional Office versions) into the central store is *not* a good solution to this, because it further confuses the situation and doesn’t solve the problem of a different Windows version’s policies being displayed (e.g.  there are like millions – okay, hundreds – of new policies defined for Windows 10 and Server 2016 and, while editing policies for Windows 7/8.x or 2008/2012 R2, it would be torture to wade through them and ignore the inapplicable ones if the Windows 10 definitions were the ones placed in the central definitions store).

Bottom line:  the central store idea was, at the time it first appeared, one of the worst ones Microsoft ever had, because they initially and for a long time thereafter provided no way for a domain machine to say “no thanks, I’ll use my own definitions”) and should even now probably only ever be used in incredibly uniform environments where every machine in the joint is running the same version of Windows, Office, etc., no machine uses custom or modified policy templates, and all machines are always updated at the same time (in lockstep with the central policy definitions) – yeah, I know of no such environment either!   My message to those who might unthinkingly implement a central policy store is “If you’re so in love with your set of policy definitions, put them where you use them without imposing them on everybody else!”.

However, should you run into this situation and can’t talk sense into your client (a shameful consulting fail, by the way J), Microsoft did at some point released a hotfix (An update is available to enable the use of Local ADMX files for Group Policy Editor) which, when installed and the following Registry entry added (set to 1), allows a Windows 7/8.x or 2008/2012 R2 machine to force the continued use of its own local policy definitions during editing, i.e. a “thanks but no thanks” setting:

Key:   HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Group Policy\EnableLocalStoreOverride

Type: REG_DWORD

Value: 0      (use PolicyDefinitions on Sysvol if present - Default)

1      (always use local PolicyDefinitions)

You’ll need to reboot after applying this hotfix (which is not delivered through Windows Update).

Thought you’d want to know.

Jacques.
Follow Jacques on twitter (@JacqBens)

Click Here to Continue Reading >>

Thursday, June 16, 2016

New IPM utility Net2SwapFlag -- solves infamous KB2536487 issue

Here is a great new utility written by my colleague Jacques Bensimon.


 

Microsoft Knowledge Base article KB2536487, entitled  Applications may crash or become unresponsive if another user logs off Remote Desktop session in Windows Server 2008 or Windows Server 2008 R2 , describes a situation whereby applications run directly from a network share can suddenly stop working for all existing and new users of a given Remote Desktop Services / Terminal Server / XenApp server as a result of one user logging off.  Having butted head with this issue, I can further clarify that once all running instances of the app on that server are fully closed, the app will once again start working, … until it occurs again (the main symptom is an application crash, either immediately upon launch or later when a particular app feature is invoked).  If online forum threads are any indication, this issue has been plaguing many environments for years (don’t let the recent date of that article fool you, it’s revision 5.0 and still as borderline incomprehensible as ever), and Microsoft is reported to have privately told some who’ve opened support cases that it doesn’t plan to provide a fix for this issue (because it entails a network File Control Block management strategy embedded deep within the redirector – I thought FCBs had gone out with 16-bit DOS applications, so I’m guessing Microsoft has recycled the term to denote something of a similar nature – think handle or the like).

 

Before I get to Microsoft’s suggested workarounds, let me first quickly dispense with a couple of urban myths that have grown up around solving the issue (I’ve tried them all, none of them work):

·        Run the app directly from a UNC path rather than a mapped drive (even if the app allows it, doesn’t work).

·        Make sure no mapping even exists to that share before using the UNC path (nope).

·        Use a DFS share, either mapped or via UNC (nyet and nyet).

 

Now here are Microsoft’s suggestions (verbatim from the KB article):

 

1.      Do not run shared applications from a mapped folder; instead install the shared application locally on the Terminal Server.

 

That right there is some solid technical support work!  … but let’s move on.

 

2.      Use WebDAV shares as opposed to mapped folders if remote binary sharing is required.

 

Not at all disruptive I’m sure (!) but, as you’d suspect, those who tried it reported horrible performance, so let’s move on again.

 

3.      Compile the application using the "Swap run from network" linker setting. This setting is described here.

 

I was ready to laugh this one off as well (the main affected app being a complex network-installed third-party application for which our client obviously didn’t have the source code and the means to recompile it), but I read the description of that linker setting anyway and found out that an executable (EXE/DLL/OCX) linked with that setting is treated differently by Windows when it is loaded, i.e. it is first copied to the local swap file and loaded from that location.   Well, that doesn’t sound like any kind of code change, merely some instruction to the OS about how the executable should be handled, the sort of thing one might find specified by something in the executable’s header maybe?  Armed with the Microsoft PE Header Specification and the experience of previously having investigated the Terminal Server Aware Flag, also found in the PE header and the subject of the IPM TSFlag utility, I found out that this setting is indeed also a single-bit flag (officially called IMAGE_FILE_NET_RUN_FROM_SWAP, value 0x0800 in the header’s so-called Characteristics word) and that it could therefore in theory be set into an already compiled executable … and thus was born the IPM Net2SwapFlag utility:

 

clip_image002

 

I applied it to every executable in the application’s network folder [For %F in (*.exe *.dll *.ocx) do Net2SwapFlag-x64 %F /QY] and the app crashes have completely disappeared since.  If the utility is launched interactively on one of the executables, it now displays something like

 

clip_image004

 

I have yet to run into an executable “in the wild” that already had that flag set, so I’m guessing not a lot of developers are even aware of the feature (which by the way as a side-effect should somewhat speed up the overall performance of network-based applications).

 

But there was one more piece of information provided as part of that last workaround given in the KB article:

 

If the application is a managed app, instead use the “Shadow Copy” feature described here.

 

I and a couple of .NET developers I spoke to couldn’t make any sense of that “Shadow Copy” feature for standalone apps (the linked article appears oriented to web development with ASP.Net), and it’s unclear from the KB article whether setting the magic flag in the header of a .NET executable would have the same desirable “run from swap” effect.  So for now I can only present  Net2SwapFlag as a working solution to the KB2536487 issue for unmanaged (i.e. non-.NET) applications.  I of course would be happy to know whether it works with managed apps, one way or the other – I’m leaning 51% toward it working there as well.   [If ever a utility required a disclaimer, this is it, so let’s keep it simple: You assume all the risks of using this utility, even if the resulting executables cause untold data and/or job loss!  Don’t even think of using the utility otherwise.  Capiche?]

 

Later,

Jacques.


You can find the utilities here.
Click Here to Continue Reading >>

Monday, May 9, 2016

Citrix Secure Gateway is dead. Long live CSG 3.3.4!

Even though Citrix’s Secure Gateway will be End of Life’d at the end of the year (soon? sometime? eventually?) (CSG EOL... Now What?), it seems as though the update department wanted to release at least one more version of the free ICA proxy software.
With this release, Citrix went ahead and added SHA-2, TLS v1.1 and v1.2 support.

You can read the release notes below:  

Assuming you are not also still running Windows 2003 or earlier (TLS v1.1 and v1.2 aren’t supported by those OSes), go ahead and grab it while it’s hot! Winking smile
Click Here to Continue Reading >>

Monday, April 11, 2016

Continue to build out your network

Like most of the rest of the world, I use Outlook as my primary CRM because of it’s seamless syncing with my iPhone (along with a million other reasons) and treat it as my central hub.  For a long time, I used the LinkedIn Toolbar for a single feature;  the ability to highlight someone’s signature and ‘grab’ it into an Outlook contact.  The LinkedIn toolbar would parse the copied information and put all the relevant information into the appropriate contact fields.  It was awesome!  Until it no longer worked. :( [Thanks Outlook 2013!]

Recently, I stumbled across a perfect replacement that I thought I would share.  It is a standalone freeware piece of Windows software called Signus. 

image

The software allows you to copy the signature into your clipboard and push it into Microsoft Outlook or Gmail.  They have a few other supported CRMs as well on their page.  [Website]

The software is about 2 years old and I’m not sure if it is still being updated but it works great now and fills the hole left by the defunct LinkedIn Toolbar.

Enjoy adding contacts!

Click Here to Continue Reading >>

Thursday, April 7, 2016

Catch Sam Jacobs at Citrix Synergy 2016!

If you are going to be at Citrix Synergy  this year, be sure to register for Sam Jacobs breakout session on Netscalers!  Check out the official promotional post below:

NetScaler Debugging A to Z
clip_image002You've spent the past few weeks implementing all the latest blog posts on configuring your NetScaler, and you're eager to see the fruits of your labors. You browse to your Access Gateway FQDN, and ... nothing but a blank screen! You review your configuration, and everything seems to be in order, but something obviously isn't. How do you go about figuring out what's wrong?
In this 90-minute breakout session, we will travel through the entire NetScaler data flow, including:
- Pre-logon (navigating to the logon page),
- Authentication,
- Session initiation (routing to StoreFront, Web Interface, or a custom home page),
- Desktop/application enumeration, and
- Desktop/application launch.
At each point along the way, you will learn the most common issues one might experience. Using the built-in NetScaler tools, as well as public-domain (free!) utilities you will learn how to diagnose, isolate, and correct them.

clip_image004Bulletproof your configuration
While having the knowledge necessary to debug and remediate NetScaler issues is critical, the best way to debug a NetScaler configuration is not to have to debug it at all! We will review a set of Best Practices to be used when setting up a NetScaler, so that the need for debugging will be greatly minimized.
NetScaler Rewrite Engine
clip_image006NetScaler has undergone a tremendous transformation since the Access Gateway was acquired from Net6 in 2004. One of the most powerful features of the NetScaler is its ability to dynamically rewrite URLs, allowing clientless access to internal resources. During the session, we will also dive deep into the rewrite engine, where we will examine how the NetScaler performs this process, what can go wrong, and what can be done about it.
clip_image008
So join me at Citrix Synergy for SYN317: NetScaler Troubleshooting and Debugging Best Practices, on Thursday, May 26th from 8:30-10:00AM PST in Bellini 2101A. Let’s go bug-hunting! Hope to see you there!




Sam Jacobs is the Director of Technology Development at IPM, the longest standing Citrix Platinum Partner on the East Coast. With more than 25 years of IT consulting, Sam is a NetScaler customizations and integrations industry expert. He holds Microsoft MCSD, Citrix CCP-M and CCP-N certifications, and is the editor of TechDevCorner.com, a technical resource blog for IT professionals. He is one of the top Citrix support Forum contributors, and has earned industry praise for the tools he has developed to make NetScaler, Web Interface, and StoreFront easier to manage for administrators and more intuitive for end users. Sam became a Citrix Technology Professional (CTP) in 2015.
Sam can be reached at: sjacobs@ipm.com or on Twitter at: @WIGuru.



Click Here to Continue Reading >>