VMware Horizon Community
Pim_van_de_Vis

Set File Type Associations (FTA) on Windows 10 using UEM

Finally a way to define File Type Associations on Windows 10!

Christoph Kolbicz reverse engineered the hash used by Microsoft to set FTA info in the registry. He created a tool that allows you to set any FTA on Windows 8/10 and 2012/2016.

Now you can finally link PDF and HTML extensions to another app than Edge. Or make any other change you would like.

When you combine this with VMware UEM, you can automatically set the right FTA's at logon.

Just create a UEM Logon Task to start the tool with the right parameters. You can find the tool, documentation and more info here:

SetUserFTA: UserChoice Hash defeated – Set File Type Associations per User or Group on Windows 8/10 ...

All credits go to Christoph Kolbicz.

23 Replies
LAANSID
Enthusiast
Enthusiast

Hi Pim,

The procedure does not work the way as in the blog, when your PDF or HTML application is installed in an (General) AppStack (VMware App Volumes) and using Windows 10.

Probably this is a timing issue attaching the AppStack or a timing issue in Windows 10 when setting the FTA.

I found a workaround/procedure...

What you need is a simple script with a timer just a line above the SetUserFTA.exe.

Run this script in the "Logon Tasks" in UEM or GPO.

For example:

1. Create a SetPredefinedFTAs.bat

2. Script:

@echo off

TIMEOUT /T 15 /NOBREAK

"\\%readshareforeverydomainuser%\SetUserFTA.exe" .pdf AcroExch.Document.DC

exit

3. I used UEM "Logon Tasks" to run it asynchronously and after profile archive import.

Pim_van_de_Vis

Thanks for the update and the insights.

Timing sometimes is an issue, so good that you report this.

Another solution which is easier to implement would be to create a UEM Shortcut in the Startup folder.

This shortcut would point to the command "\\%readshareforeverydomainuser%\SetUserFTA.exe" .pdf AcroExch.Document.DC and should be created in the 'Startup' folder.

This way the command is executed when the Windows Explorer starts, which is one of the first things that happens once the user session is started.

Reply
0 Kudos
Ray_handels
Virtuoso
Virtuoso

Thanks for this info, very interesting. Gonna try it right away.

Regarding the UEM and Appvolumes timing issue. I have had a few discussion with some VMWare engineers regarding this. You also see this issue with setting printers using UEM (which we would love to do but can't use at the moment) because Appvolumes does a restart of the spooler after attachment.

Isn't it possible to create a condition within UEM to wait for Appvolumes to be finished processing appstacks? I know that an event is written in event viewer when all appstacks are processed and available (reverse_replicate not taken into account but that is not needed for this).

For people that use both UEM and Appvolumes it would be a life saver. Using powershell for attaching printers now and it's not the fastest solution Microsoft ever came up with Smiley Happy.

Reply
0 Kudos
DEMdev
VMware Employee
VMware Employee

Hi Ray_handels,

Hmmm... Did you receive a copy of our roadmap or something? 🙂

UEM 9.3 (to be released very shortly) has some App Volumes-specific logic to deal with the spooler restart.

Reply
0 Kudos
Ray_handels
Virtuoso
Virtuoso

This is something that has been a wish of us for a very long time.

We struggled with setting printer connections and as we started using UEM a few weeks back and found out that the logic behind it is very easy and works like a charm. Only downside is that it still interferes with Appvolumes when logging in, mostly due to applications not being there already and timing issues with the print spooler.

Having an option like that would be very very helpful for us. It would mean even faster login times.

I know that this is an open door Smiley Happy and I already know the answer but any word on release dates?? I know that a new version of View is around the corner so delivering both UEM and Horizon View's new version would make sense Smiley Happy. Can't wait to get my hands on that Smiley Happy....

Reply
0 Kudos
DEMdev
VMware Employee
VMware Employee

Delivering new versions of UEM and Horizon at the same time would make sense, right? Nudge, nudge, wink, wink.

🙂

Reply
0 Kudos
DEMdev
VMware Employee
VMware Employee

UEM 9.3 has been released, and it contains a fix for the issue where printer mapping fails while an AppStack with printer drivers is being attached.

Reply
0 Kudos
Ray_handels
Virtuoso
Virtuoso

Thank you very much for the heads up. Any word on release notes or admin guides? Tried looking for it but apparently Google didn't scavenge it yet Smiley Happy

Reply
0 Kudos
ijdemes
Expert
Expert

docs.vmware.com is your friend Smiley Wink

https://docs.vmware.com/en/VMware-User-Environment-Manager/index.html


\\ Ivan
---
Twitter: @ivandemes
Blog: https://www.ivandemes.com
SchwarzC
Enthusiast
Enthusiast

It works fine - but is there a way to just do this the first time a user logins into w10 (new employees), because we don`t want to override different settings - for instance a user decides to use Chrome as his default Browser - like the predefined setting from UEM.

Thanks!

Reply
0 Kudos
LAANSID
Enthusiast
Enthusiast

There are more ways to implement this.

Don't know if you have persistent or non-persistent VDI's or maybe fat clients...

If you have non-persistent VDI, then you need the really run once option (see: https://kb.vmware.com/s/article/2146336​).

With persistent VDI's or fat clients you, can you can use the out-of-the-box "run once" from UEM.

What you also can do is workout multiple scenarios and connect an AD-group for the different browsers you offer.

You only need another mechanism (self-service tool) to let the users switch by themselves.

Microsoft don't make it much easier in Windows 10...

Good-luck!

SchwarzC
Enthusiast
Enthusiast

Hey I`ve tried your RunOnceSpecial but it didn`t work so far - anything I am doing wrong here?

<?xml version="1.0" encoding="utf-8"?><userEnvironmentSettings><setting type="importTask" command="\\***\it\UEMConfig\Default Settings\SetUserFTA_v1.5\SetUserFTA.exe .pdf AcroExch.Document.DC" label="****" async="1" runOnce="1" runOnceSpecial="1" /></userEnvironmentSettings>

Reply
0 Kudos
LAANSID
Enthusiast
Enthusiast

Sorry for the late response. It is quite busy at the moment at work and home.

Maybe I can test it later this week, why it doesn't work out for you.

DEMdev
VMware Employee
VMware Employee

Thank you, LAANSID, for posting to this thread, which made me realize I'd somehow missed the previous message from SchwarzC​​. Sorry about that.

SchwarzC, can you post a FlexEngine log file at log level DEBUG, covering at least the logon and logoff of one session, and the logon of the next session for that user? The config file you posted looks OK, so hopefully the log file contains some hints about what's (not) going on.

LAANSID
Enthusiast
Enthusiast

Everything looks fine in my opinion...

Pim (which started this topic) advised us to create start menu shortcut in the "Startup" instead of the import task. Try this...

This works fine at my current project.

Recently someone from the VMware community (Ivo van de Mes) have placed a blogpost about roaming the user FTA instead of mandatory set it.

Link: https://www.ivandemes.com/export-import-file-type-associations-fta-successfully-using-uem/

I'm trying to implement it at my current project, because they are afraid there will be no adoption if a user cannot change the default browser, pdf viewer or photo/video player.

Goodluck.

Reply
0 Kudos
SimonPetrikov
Enthusiast
Enthusiast

This works and I posted to reddit as well.

https://www.reddit.com/r/vmware/comments/9il6g9/file_type_associations_for_windows_10_and_vmware/

After a couple days of research and failed attempts to get FTAs functioning on Windows 10 using UEM, I was finally successful following most of the steps referenced here. I did however have to complete a couple of tweaks to make this work using UEM but ultimately the steps provided by Mr. James Rankin were tremendously helpful.

How I did it for UEM.

  1. Set defaults on Template.
  2. class="yklcuq-10 hpxQMr"

The following is only required if you would like any changes the user makes to FTAs to be roaming.

  1. Created powershell script to export the .xml file upon logoff and saved on template.

. C:/Windows/system32/dism.exe /Online /Export-DefaultAppAssociations:\\UEMServer\UEMPROFILESHARE\$env:username\OEMDefaultAssociations.xml 

2. Created second powershell script to import that .xml at login and saved on template

if (Test-Path \\UEMServer\UEMPROFILESHARE\$env:username\OEMDefaultAssociations.xml){ Copy-Item \\UEMServer\UEMPROFILESHARE\$env:username\OEMDefaultAssociations.xml -Destination C:\Windows\System32 } 

3. Used UEM to execute logon task, running the script created in step two of this section.

powershell.exe -ExecutionPolicy Bypass -Command "& C:\ImportFTA.ps1" 

4. Used UEM to execute logoff task, running the script created in step one of this section.

powershell.exe -ExecutionPolicy Bypass -Command "& C:\ExportFTA.ps1" 

5. Used UEM to create Privilege Elevation rule for DISM

C:\Windows\System32\Dism.exe

Reply
0 Kudos
DEMdev
VMware Employee
VMware Employee

Just in case someone finds this old thread: Dynamic Environment Manager 9.10 has been released, and now provides roaming of default applications out of the box.

admsrvvma01
Contributor
Contributor

DEMdev omg Christmas came early. Thanks!

SimonPetrikov
Enthusiast
Enthusiast

That's fantastic, can't wait to give this a try!