blog.plee.me About software, technology and random things

23Jun/190

Missing Credentials in Dropdown for Jenkins Build Configuration

Hello!

Recently I updated my Jenkins installation including all of the plugins. One of them must have brought somewhat breaking changes because when I tried to create a new build configuration for a new old project of mine, I could not select the proper credentials in the dropdown. I only had the option to add new ones even though I had added the corresponding credentials in the global scope (as per usual), so they must have been visible across the entire Jenkins instance. None of them were showing up. And even when I tried adding new ones through the build configuration page, they ended up not being active / selected either.

When I went back to check with an existing build configuration I had configured over a year before, I could confirm the same behavior. For build parameters the credentials dropdowns were empty and for the VCS credentials it said

Cannot find any credentials with id <ID>

I spent a couple of hours looking for solutions and I did find some cases that popped up around 1 or 2 years ago, but nothing that fit this exact scenario. My suspicion was that this might be a bug, so I tried rolling back the SSH credentials and credentials plugins to the previous versions, but that did not fix anything.

I decided to wait for a week in the hopes of potential bug fix releases to come out for either some of the plugins or Jenkins itself, but a week later in spite of a couple of updates here and there, nothing about the problem had changed.

And then I found a comment in the discussion thread of a GitHub issue of the "GitHub Pull Request Builder Plugin" (which I am not even using). In it, the following solution was proposed:

  1. Navigate to "Jenkins" (main menu) => "Manage Jenkins" => "Configure Global Security"
  2. Go to the "Access Controls for Builds" section
  3. Under "Project default Build Authorization" check if the "Strategy" is set to "Run as anonymous" (which was the case for me)
  4. If yes, try changing it to "Run as User who Triggered Build" (it might also work with another setting if that suits you better)
  5. Save and reload the build configuration settings

That was it! The credentials showed up again and I could execute the build successfully.

I know this seems to be a niche problem and there might only be a handful of people that have encountered the same issue, but I hope it was helpful nonetheless.

Thank you for reading!

24Oct/180

Disable Autoplay For Videos in Firefox 63

Hi!

Just after updating to Mozilla Firefox 63 (on Windows), I found that my setting to disable autoplaying media / videos was no longer effective - at least for HTML5 videos.

Apparently one of the changes for this release was to include an autoplay video blocker, but I could not find anything definitive about this in the settings.

I decided to disable autoplay for all videos (which is my preferred setting anyway) once again by doing the following:

  1. Open the config editor by entering about:config in the navigation bar.
  2. Enter the "autoplay" as a filter.
  3. Find the entry "media.autoplay.default", double-click it and set it to "1" to disable media autoplay browser-wide.

I just left the old setting "media.autoplay.enabled" as "false", even though it does not seem to be relevant any more.

After reloading the website with the video (in this case YouTube), once more it showed the play icon on top of the video instead automatically starting playback.

Source: https://www.linuxliteos.com/forums/on-topic/firefox-63-0-unable-to-stop-html5-videos-from-auto-playing-in-this-release/

I hope this was helpful.

Thanks for reading!

31May/180

Using Git Bash With Custom Installation Of GPG / GnuPG

Hi!

You have probably noticed that Git for Windows comes with MinGW64, which enables you to use programs (or to be more precise: Windows versions of these programs) that are usually only available to Linux users. One of the programs that MinGW64 / Git for Windows ships with is GPG / GnuPG. The current version of Git for Windows (2.17.1) for example comes with GPG version 1.4.22.

If you prefer using a custom installation of GPG / GnuPG by default, which is probably much more current than the one you installed manually (2.x), you can achieve this by doing the following:

  1. Install GPG as you normally would
  2. Make sure it is executable in the command line / PowerShell (as in: make sure the bin/ subdirectory of the GPG program directory is included in the PATH environment variable)
  3. Go to the Git for Windows program directory (e.g. C:\Program Files\Git\)
  4. Navigate to the usr/bin/ subdirectory and rename gpg.exe to something else (like gpg_disabled.exe)
  5. Close any open Git Bash instances and start a fresh one
  6. Check the GPG version via
    gpg --version

The way that Git Bash works is that is has its own set of directories which have a higher priority when looking for executable files than the ones in Windows' PATH environment variable. So in order to have your own GPG executable working as the "gpg" command, you have to get the included gpg.exe out of the way so it keeps looking in Windows' PATH environment variable.

You can still access the old GPG executable by using the new name (e.g. "gpg_disabled").

Unfortunately you have to do these steps every time you install or update Git for Windows, but at least now you know where to look!

The upside is that now Git (executed from the Git Bash) also uses your own version of GPG for its GPG-related operations.

I hope this was helpful.

Thanks for reading!

4Jan/180

Using OpenVPN For All Network Traffic Except For LAN

Hi!

Recently I noticed that my Android smartphone was not able to connect to YouTube via third-party apps. I narrowed it down to the issue with it being able to resolve hostnames to the correct IPv6 addresses but not being able to connect to them (somehow the IPv6 part of my internet connection is broken. A problem for a different time).

In order to work around the problem I am using an OpenVPN connection which automatically forces all outgoing connections to use IPv4, not IPv6. The only problem was that internal LAN connections did not work any more.

In the .ovpn configuration file I am using

redirect-gateway local def1

(because it is a WiFi connection), but I was also using

redirect-gateway def1

before that, which did not make any difference in that regard.

If add a route directive like the following one after the redirect-gateway directive, you can add a route to the routing table, directing all traffic for the specified route to the WiFi connection instead of the VPN connection:

redirect-gateway local def1
route 192.168.0.0 255.255.255.0 net_gateway

You will probably have to adjust the network address and maybe even the subnet mask to match your network.

The routing table is basically a prioritized table which lets the operating system decide which network adapter it should use for a specific connection. With the above entry you add a rule with a higher priority, overriding the generic one(s) from the OpenVPN connection configuration. These ones are added because of redirect-gateway def1 and tell the operating system to send all traffic via the virtual VPN network adapter, effectively sending it all over the VPN.

If you are configuring this from the OpenVPN server side, of course you can still use these directives, but in the context of the push directive. I am not doing that, however, so I saved both directives in the client configuration.

Now I can watch / listen to YouTube videos with third-party apps AND connect to LAN devices!

I hope this was helpful to you.

Thank you for reading!

7Dec/170

Rewrite MySQL / MariaDB Database Dump Create View Statements For Current User

Hi!

If you would like to import a database dump file created by MySQL's or MariaDB's mysqldump executable, but it contains statements to create views, the import process may abort with an error when it comes to creating views.

When creating a view, MySQL wants to know who created it, and for that it needs a username and the host. If the user who is executing the import does not have sufficient privileges or the original user referenced in the dump does not exist (for example when importing the dump into a fresh database for a migration), this leads to an error.

Usually when I import a dump, I don't care so much about the "SQL Security Definer", so I just want to set it to the importing user.

You can generate a new, modified SQL dump file very easily with the following shell command:

$ sed -r 's#^(/\*!50013 DEFINER=).+?( SQL SECURITY DEFINER \*/)$#\1CURRENT_USER\2#' input_file.sql > output_file.sql

This command simply scans through the entire dump, looking for the statement created by mysqldump which triggers the database to create the view if it doesn't exist already. It then sets the user information to CURRENT_USER which refers to the user that is currently executing the import.

Please note that because the search pattern is so specific, it will probably require some modification in the future, depending on the version of mysqldump you're using and if / how they change this particular statement. On the upside the chance that it will accidentally modify something it shouldn't is pretty low.

I hope this is helpful to you!

Thanks for reading!

18Oct/170

High DPI / Font Scaling Display Problem With LibreOffice

Hello!

When I installed LibreOffice on my Windows 10 notebook with 125% font scaling, I immediately noticed that the menu bar was somehow hiding behind the title bar and everything I clicked was recognized as clicked a couple dozen pixels above what I was actually pointing at.

This seems to be a known problem for LibreOffice with OpenGL and high DPI / high font scaling, maybe specifically in conjunction with my Intel HD Graphics / IGPU.

The fix is fairly easy but difficult to find out on your own:

  1. Make sure that no LibreOffice application is running.
  2. Open the LibreOffice OpenGL blacklist configuration file with a text editor, usually found at C:\Program Files\LibreOffice 5\share\opengl\opengl_blacklist_windows.xml.
  3. Inside the block enclosed by the <blacklist> tag, add the following block:
    <entry os="all" vendor="intel">
        <device id="all"/>
    </entry>
  4. Save and start a LibreOffice application to check.

This should do it!

Thanks for reading!

Source: https://ask.libreoffice.org/en/question/125453/libreoffice-dpi-is-off/

7Sep/170

Open PhpStorm From Windows Explorer Context Menu For Directories

Hello!

If you are a bit lazy like me and just want to simply open PhpStorm from the directory that you've currently navigated to in Windows Explorer, you can use this .reg file to add the registry entries for the entry in the context menu.

Warning: This involves messing around a bit with the registry. Please make sure you understand what you are doing!

This .reg file assumes that the path to your PhpStorm installation is C:\Program Files (x86)\JetBrains\PhpStorm 2017\. If it is not, just search and replace every occurrence of the path in the .reg file with the one that applies for you. Remember to escape backslashes with a backslash!

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\*\shell\Aphpstorm]
[-HKEY_CLASSES_ROOT\Folder\shell\Aphpstorm]
[-HKEY_CLASSES_ROOT\Directory\Background\shell\Aphpstorm]

[HKEY_CLASSES_ROOT\*\shell\Aphpstorm]
@="Open Directory in PhpStorm"
"Icon"="C:\\Program Files (x86)\\JetBrains\\PhpStorm 2017\\bin\\phpstorm64.exe"

[HKEY_CLASSES_ROOT\*\shell\Aphpstorm\command]
@="C:\\Program Files (x86)\\JetBrains\\PhpStorm 2017\\bin\\phpstorm64.exe \"%1\""

[HKEY_CLASSES_ROOT\Folder\shell\Aphpstorm]
@="Open Directory in PhpStorm"
"Icon"="C:\\Program Files (x86)\\JetBrains\\PhpStorm 2017\\bin\\phpstorm64.exe"

[HKEY_CLASSES_ROOT\Folder\shell\Aphpstorm\command]
@="C:\\Program Files (x86)\\JetBrains\\PhpStorm 2017\\bin\\phpstorm64.exe \"%1\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\Aphpstorm]
@="Open Directory in PhpStorm"
"Icon"="C:\\Program Files (x86)\\JetBrains\\PhpStorm 2017\\bin\\phpstorm64.exe"
;"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\Aphpstorm\command]
@="C:\\Program Files (x86)\\JetBrains\\PhpStorm 2017\\bin\\phpstorm64.exe \"%V\""

Instructions: Just copy the text into a text file, save it as a file with the .reg extension (e.g. "phpstorm.reg") and execute it via double-click. When asked if you want to continue modifying the registry, confirm with "Yes".

Note: You might wonder why the registry paths contain a segment called "Aphpstorm" instead of "phpstorm" (or anything else). This is so that this entry takes alphabetic precedence over other entries and it is sorted further up. It will not influence the text displayed in the context menu.

Unfortunately I do not know the exact source for this neat little trick because I got this from a colleague at work.

If you wish to revert these changes at some point, just do what the first three instructions in the .reg file do: delete the 3 appropriate keys in the registry.

I hope this is useful to you! It sure is for me.

Thanks for reading!

7Aug/176

Fixing Low Stereo Out Sound Volume For the Yamaha MG12XU / MG16XU / MG20XU Audio Mixer

Hi!

I recently got my hands on a Yamaha MG12XU audio mixer and dove right into the world of amateur analog audio mixing.

Everything went fine until it came to the USB interface. When trying to record the sound that was output via USB to my computer (basically STEREO OUT without the master stereo fader), it did arrive, but the volume was really, really low. Audacity barely showed any change in the graphs displaying the signal volume (went from a one pixel thick line to an occasionally 2-3 pixel thick line).

Additionally, the audio that went into the mixer via USB (channel 11/12 on the MG12XU) was considerably louder than all my other channels. In fact, if I used the USB attenuator function (press the PROGRAM dial/button 5x, turn the dial to adjust between -24 to 0 dB and confirm by pressing it once more) to set it to -24 dB, the lowest setting, only then was it as loud as all my other channels. That should have been the first indication as to what was wrong.

This was after installing the YAMAHA Steinberg USB driver from the official Yamaha Professional Audio website, which I strongly recommend. The default one that Windows 10 installed when it first detected the mixer somehow resulted in CPU usage skyrocketting due to svchost.exe. Not sure what that was about.

I tried installing the ASIO4ALL driver, but it didn't appear to make any difference, so I called the technical support hotline.

The very friendly and competent person on the other end explained to me that the signal strength the mixer was working with from the input all the way to STEREO OUT was simply too low. I had intentionally kept everything just as low as I could with the channel sliders on the 0 positions because I didn't want the gain settings to distort my signals. Turns out that mixers work best with the highest volume levels possible without distortion or constant peaking which does make sense - if you have more data for the signals, you can do more with them in terms of EQ, FX or anything really. Another clue was the monitor level display on the right side. For normal signals it only went up to a strength of about -25 to -30, which is basically the two bottom indicators of a total of twelve. They should be around the 0 level (5th from the top).

Once I realized that, it was only a matter of increasing the gain levels for the different input channels and lowering the master stereo slider as well as the phones level knob (and the AUX1 level knob in the SEND MASTER section) accordingly because the signal was now very strong. The monitor level now usually filled up to the 4-6 bottom-most lights (-15 to -6).

One test recording confirmed that the STEREO OUT USB signal was now as loud as what I heard on my headphones.

This was loud enough for me (the phones dial being set to 1 / the first "notch"), and translated to a gain level at 8 out of 10 "notches" (3 o'clock position) for all my sound cards (which were set to 100% volume in Windows for input as well as output) as well as my XLR microphone. Luckily, at this point there was no noticeable distortion yet.

Oh, and the volume in the USB input (channel 11/12) was now as loud as the other ones even without any attenuation set.

That's it!

I hope that helps you.

PS: Sorry if that is a bit of an obvious "hint", but as a beginner in the audio space myself, the advice from the Yamaha customer service representative made a light bulb switch on in my head. I thought I would share it in case you are having the same experience.

PPS: Even though I can only speak of the MG12XU, I am pretty certain that this applies to the sister models MG16XU and MG20XU, too, and maybe even the entire range of Yamaha audio mixers.

2Mar/170

Using Windows Photo Viewer in Windows 10

Hi!

If your Windows 10 system is an upgrade from a previous Windows version, you will not have encountered this problem.

This is only relevant for clean, non-upgrade Windows 10 installs.

I noticed that on my clean Windows 10 install the default application for viewing picture files like JPEG or PNG was the Microsoft Photos app. As I prefer the classic Windows Photo Viewer application for viewing images, I tried to select that as the default. Surprisingly enough, it was not in the list of options.

To add the Windows Photo Viewer back to the list of applications for pictures, you have to import missing registry entries. This is due to the fact that Windows Photo Viewer does not come as an executable but as a DLL.

The following explains the process for the whole system (not just the current user). The source article contains an alternative method for just the current user as well as a "sort order fix" solution that takes into account the order in which the files were sorted inside the directory.

  1. Download the "Restore_Windows_Photo_Viewer_ALL_USERS.reg" file from the source article or create a new text file with a ".reg" extension and the following contents:
    Windows Registry Editor Version 5.00
    
    ; Created by: Shawn Brink
    ; Created on: August 8th 2015
    ; Tutorial: http://www.tenforums.com/tutorials/14312-windows-photo-viewer-restore-windows-10-a.html
    
    
    [HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open]
    "MuiVerb"="@photoviewer.dll,-3043"
    
    [HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\Applications\photoviewer.dll\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap]
    "ImageOptionFlags"=dword:00000001
    "FriendlyTypeName"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,\
      00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,\
      77,00,73,00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,\
      00,65,00,72,00,5c,00,50,00,68,00,6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,\
      65,00,72,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,35,00,36,00,00,\
      00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\DefaultIcon]
    @="%SystemRoot%\\System32\\imageres.dll,-70"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Bitmap\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF]
    "EditFlags"=dword:00010000
    "ImageOptionFlags"=dword:00000001
    "FriendlyTypeName"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,\
      00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,\
      77,00,73,00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,\
      00,65,00,72,00,5c,00,50,00,68,00,6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,\
      65,00,72,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,35,00,35,00,00,\
      00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\DefaultIcon]
    @="%SystemRoot%\\System32\\imageres.dll,-72"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\shell\open]
    "MuiVerb"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,\
      69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,\
      00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,\
      72,00,5c,00,70,00,68,00,6f,00,74,00,6f,00,76,00,69,00,65,00,77,00,65,00,72,\
      00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,34,00,33,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.JFIF\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg]
    "EditFlags"=dword:00010000
    "ImageOptionFlags"=dword:00000001
    "FriendlyTypeName"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,\
      00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,\
      77,00,73,00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,\
      00,65,00,72,00,5c,00,50,00,68,00,6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,\
      65,00,72,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,35,00,35,00,00,\
      00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\DefaultIcon]
    @="%SystemRoot%\\System32\\imageres.dll,-72"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\shell\open]
    "MuiVerb"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,\
      69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,\
      00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,\
      72,00,5c,00,70,00,68,00,6f,00,74,00,6f,00,76,00,69,00,65,00,77,00,65,00,72,\
      00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,34,00,33,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Jpeg\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif]
    "ImageOptionFlags"=dword:00000001
    "FriendlyTypeName"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,\
      00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,\
      77,00,73,00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,\
      00,65,00,72,00,5c,00,50,00,68,00,6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,\
      65,00,72,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,35,00,37,00,00,\
      00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\DefaultIcon]
    @="%SystemRoot%\\System32\\imageres.dll,-83"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Gif\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png]
    "ImageOptionFlags"=dword:00000001
    "FriendlyTypeName"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,\
      00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,\
      77,00,73,00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,\
      00,65,00,72,00,5c,00,50,00,68,00,6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,\
      65,00,72,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,35,00,37,00,00,\
      00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\DefaultIcon]
    @="%SystemRoot%\\System32\\imageres.dll,-71"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Png\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp]
    "EditFlags"=dword:00010000
    "ImageOptionFlags"=dword:00000001
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\DefaultIcon]
    @="%SystemRoot%\\System32\\wmphoto.dll,-400"
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\shell\open]
    "MuiVerb"=hex(2):40,00,25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,\
      69,00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,\
      00,20,00,50,00,68,00,6f,00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,\
      72,00,5c,00,70,00,68,00,6f,00,74,00,6f,00,76,00,69,00,65,00,77,00,65,00,72,\
      00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,33,00,30,00,34,00,33,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\shell\open\command]
    @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
      00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
      6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
      00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
      25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
      00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
      6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
      00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
      5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
      00,31,00,00,00
    
    [HKEY_CLASSES_ROOT\PhotoViewer.FileAssoc.Wdp\shell\open\DropTarget]
    "Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities]
    "ApplicationDescription"="@%ProgramFiles%\\Windows Photo Viewer\\photoviewer.dll,-3069"
    "ApplicationName"="@%ProgramFiles%\\Windows Photo Viewer\\photoviewer.dll,-3009"
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations]
    ".jpg"="PhotoViewer.FileAssoc.Jpeg"
    ".wdp"="PhotoViewer.FileAssoc.Wdp"
    ".jfif"="PhotoViewer.FileAssoc.JFIF"
    ".dib"="PhotoViewer.FileAssoc.Bitmap"
    ".png"="PhotoViewer.FileAssoc.Png"
    ".jxr"="PhotoViewer.FileAssoc.Wdp"
    ".bmp"="PhotoViewer.FileAssoc.Bitmap"
    ".jpe"="PhotoViewer.FileAssoc.Jpeg"
    ".jpeg"="PhotoViewer.FileAssoc.Jpeg"
    ".gif"="PhotoViewer.FileAssoc.Gif"
    ".tif"="PhotoViewer.FileAssoc.Tiff"
    ".tiff"="PhotoViewer.FileAssoc.Tiff"
  2. If you created the file by hand, it should use Windows line endings (CRLF).
    Also, the original file has UCS-2 LE BOM encoding, but I am not positive if that makes any difference as opposed to standard UTF-8 encoding without a BOM. I checked this with Notepad++.
  3. Run the .reg file.
  4. This should be it! You can now delete the .reg file and try selecting Windows Photo Viewer once again.

I think it is a bit weird that Microsoft would choose to omit these settings for a clean Windows 10 install, but I am happy that I can still use it with just this little tweak.

Source with more information, alternative ways to do this and instructions to revert these changes: https://www.tenforums.com/tutorials/14312-windows-photo-viewer-restore-windows-10-a.html

Thanks for reading!

%d bloggers like this: