Rick Strahl's Weblog
Wind, waves, code and everything in between...
- The Markdown Editor for Windows
WebLog Posts in Category Windows
September, 2022 (3)
August, 2022 (3)
July, 2022 (2)
June, 2022 (2)
April, 2022 (2)
March, 2022 (2)
February, 2022 (2)
January, 2022 (2)
December, 2021 (1)
November, 2021 (3)
October, 2021 (1)
September, 2021 (1)
August, 2021 (2)
ASP.NET Core (56)
Visual Studio (54)
.NET Core (19)
Web Services (19)
Web Api (16)
Sql Server (10)
Microsoft AJAX (8)
West Wind Ajax Toolkit (7)
Web Connection (7)
Entity Framework (6)
Internet Explorer (6)
Html Help Builder (5)
Markdown Monster (5)
Live Writer (5)
Software Development (5)
Source Control (4)
Help Builder (3)
Web Browser Control (3)
Visual Studio Code (2)
Web Development (2)
ASP.NET vNext (2)
.NET Standard (2)
Visual Studio (1)
ASP.NET Markdown (1)
Control Development (1)
Credit Card Processing (1)
Dynamic Types (1)
CSharp Dotnet (1)
WPF Windows (1)
VS Code (1)
Web Assembly (1)
Web Deployment Projects (1)
Web Design (1)
Integrating Long Path Names in Windows Applications
January 03, 2022 - Maui, Hawaii
Long Path Names in Windows are a pain in the butt, but Windows 10 recently starting adding better support for Long Paths in Version 1607+ which for now has to be enabled explicitly. It also requires an application configuration switch in the manifest file. As nice as that support is, it doesn't solve all problems especially when integrating with other components or external applications that don't support long paths. In this post I describe what works, what doesn't and a few hacks to make most things work.
WebView and Modal Dialogs in WPF Async Code
August 16, 2021 - Hood River, Oregon
Another day another problem with the WebView control - this time dealing with certain Windows dialogs crashing the WebView control and making it unresponsive so that the control has to be reloaded or - more commonly the application has to be restarted.
WebView2: Forwarding Alt Keys to a Host WPF Window
April 15, 2021 - Maui, Hawaii
I've been puzzling over how to reliably integrate keyboard forwarding from the WebView2 control into WPF host forms. Unlike the IE WebBrowser control the WebView2 doesn't automatically forward Alt keys to the host form so special handling is required. In this post I describe why this is a problem and show the workaround to make this work.
Opening an Admin Windows Terminal from Visual Studio
February 04, 2021 - Maui, Hawaii
Opening Windows Terminal from another application is a bit of a pain. In particular I wanted to open Windows Terminal as an External Tool from Visual Studio and found it wasn't as easy as referencing the `wt.exe` executable. Opening as an Administrator adds additional complexity. In this post I'll talk about the use case of an External Tools and the settings to launch both a regular and admin Windows Terminal instance from External Tools.
January 26, 2021 - Maui, Hawaii
Taking the new Chromium WebView2 Control for a Spin in .NET - Part 1
January 14, 2021 - Maui, Hawaii
Window Activation Headaches in WPF
October 12, 2020 - Maui, Hawaii
Ran into a problem with properly activating a WPF when launching from Explorer and indirectly trying to activate an already running instance 'from within itself'. It seems simple, but windows focus-stealing restrictions can cause problems with actually getting focus into an application window. Here's how.
Mirror your iOS Device Screen on Windows with the free 5KPlayer
June 26, 2020 - Maui, Hawaii
Apple doesn't exactly make it easy to use iOS devices on Windows and one complication is how you can cast your iOS device to a Windows screen. This is useful for presentations or screen captures that I often do and in the past i've gone through a number of shady tools that have come and gone. Recently ran into 5KPlayer which is a nice video player that as a bonus acts as an AirPlay server and makes short work of casting iOS content to Windows
Using WSL to Launch Several Bash Commands from an Application
May 19, 2020 - Maui, Hawaii
Struggled today with launching WSL from a Windows application to automate an external build process. Turns out this was a lot harder than it should have been due to some quirks on how the `wsl.exe` and `bash.exe` are registered by the Windows Sub System for Linux.
Missing Sharing Tab in Windows Explorer and Sharing with PowerShell
April 13, 2020 - Maui, Hawaii
On several of my machines I've found that the 'Sharing Tab' in Explore had gone missing and I've been unable to create a share through the Windows UI. Apparently some update or software installed mucked with my settings that created an explicit exclusion to disable this Shell Addin. In this post I describe how to fix this problem and then offer several solutions: Fixing the UI problem and maybe more usefully show how you can use Powershell to share a folder or drive instead of the Windows UI.
Troubleshooting Windows Sleep Insomnia
March 02, 2020 - Maui, Hawaii
Windows long has had problems making machines stay in Sleep mode. In this post I describe some of the problems and likely solution by using `powercfg.exe` to hunt down and disable devices that can wake the computer from sleep.
Deleting Problem Folders and Files on Windows: Could not find this Item Error
February 10, 2020 - Maui, Hawaii
Ever have a problem not being able to delete a file or folder because the filename is invalid? You see it in Explorer, but you can't delete or move the file? Well I just ran into this issue and after some digging figured out that you use extended path syntax `\\?\` to get around some interesting naming and sizing issue with Windows path operations.
Windows Authentication and Account Caching on Web Browser Auto-Logins
October 19, 2019 - Maui, Hawaii
If you're working with Windows authentication to access Windows or Active Directory groups be aware that there's a gotcha with newly added groups when users are automatically logged into the Web browser.
Open Internet Settings Dialog directly on Windows
September 10, 2019 - Maui, Hawaii
Windows is making it harder to find classic Control Panel windows and the Internet Settings dialog is no exception. The Networking options no longer have a link to it, so you have remember where to look for it. Here's a quick way to get to it.
Programmatically Opening Windows Terminal in a Specific Folder
September 03, 2019 - Maui, Hawaii
The new Windows Terminal provides many cool new features and much improved Terminal performance which makes it very desirable to use even in its current preview state. However, unfortunately the Terminal currently lacks a command line interface to control startup, do if you want to externally launch a shell some workarounds are required to get it to start out of a specific folder.
First Steps in porting Markdown Monster WPF App to .NET Core 3.0
April 24, 2019 - Maui, Hawaii
I spent a good part of the day today getting Markdown Monster to run on .NET Core 3.0 and in this post I packaged up my notes into a lengthy post with how went through this process. It wasn't exactly quick to make this happen but MM has a few peculiarities that made this process a little bit more trying than it could have been. I'll summarize some thoughts at the end on both the process and the relevance of this process.
Updating Windows Applications and Installers for non-Admin Installation
July 17, 2017 - Hood River, OR
I recently updated Markdown Monster to run as a non-admin installation even when running the full installer. There have been many requests for this functionality and in this post I describe several of the updates required in order to make this work.
July 06, 2017 - Hood River, OR
Automating IIS Feature Installation with Powershell
May 25, 2017 - Hood River, OR
IIS often gets a bad wrap for being diffcult to install and configure. However, using some of the built-in tooling for administration using PowerShell it's actually quite easy to configure IIS and even set up a new site and application pool with a few short scripts that are much quicker, and more repeatable than using the various Windows UI features. Here's how.
Virus Scanning Madness for Software Distribution
April 02, 2017 - Maui, Hawaii
I've been having having lots of problems recently with VirusTotal, which is used by Chocolatey to scan for malware in Chocolatey distribution packages. VirusTotal is a Web based service that aggregates around 60 virus scanners against an installation binary. The problems is that I frequently see random malware hits by various obscure scanners. In this post I describe the problem and the farce that this has become as some of the malware hits are obviously false positives that actually reverse in a rescan.
Dragging and Dropping Images and Files into the Web Browser Control
March 10, 2017 - Maui, Hawaii
Dragging content into the Web Browser control and capturing the content dropped can be tricky. The Web Browser Control is based on Internet Explorer and is actually an ActiveX control hosted inside of a container and because of that is difficult to deal with. In this post I describe how you can get around this issue and still capture images and files dropped on the control and handle the drop operations.
Video Rendering Issues for WPF Windows
February 13, 2017 - Maui, Hawaii
Recently I ran into a few reports of black screen of death rendering of Markdown Monster when starting up from a very few users of the application. They reported the screen just shows black, while actually being responsive to moving and showing menus etc. Also moving to another screen often fixes the problem. It turns out this is a hardware related issue with WPF with certain video hardware/monitor combinations. In this post I describe the problem and the workaround to get the application to render properly even on compromised hardware.
Creating a portable and embedded Chocolatey Package
January 29, 2017 - Maui, Hawaii
Chocolatey is an awesome tool to install software. As a publisher you have a lot of choices of how to create packages and in this post I describe the two packages that I use with Markdown Monster, which is a full downloaded installer package and a fully self contained embedded portable package. Here I cover the basics of Chocolatey package creation and some of the steps required to create a portable package from a full installation and some of the challenges you might run into along the way.
Faking out the .NET Runtime Version
January 09, 2017 - Maui, Hawaii
I've been struggling with DPI Scaling issues in WPF in Markdown Monster and .NET 4.6.2 has a few fixes that address the problems I've been working on. However, requiring 4.6.2 is a problem due to lowish adoption rates and skittishness about installing new versions of .NET. In this post I show a little hack that allows me to compile my app to .NET 4.6.2 but don't require user to have that version installed so those that have it can take advantage of the updates.
Introducing Markdown Monster - a new Markdown Editor
November 04, 2016 - Maui, Hawaii
I'm happy to announce Version 1.0 of Markdown Monster a Markdown Editor and Weblog Publishing tool for Windows. In this post I give a quick tour of Markdown Monster and provide links to all you need to know to check out this great new Markdown editor.
Windows Update Hell
November 03, 2016 - Maui, Hawaii
I've been fighting Windows Update Hell for the last month with failed updates wreaking havoc on my machine. Updates fail to install completely and roll back and then continue to retry each day. Attempts to turn off the particular update now fails as well, so I'm stuck in this groundhog day like loop of pain. This is a cry for help, in hopes somebody has additional ideas on what to try.
Automating Installation Builds and Chocolatey Packaging
October 25, 2016 - Maui, Hawaii
Having a quick and easy way to build a final deployable applicationsin a few minutes has been a huge motivation for me. I can update code and release a new build as soon as a feature is added or a bug is fixed, and my release cycle is much more frequent than it was before. I used to be much more conservative with releases - if something was broken it'd have to wait. But with an easy release mechanism all of that has changed and I can push new releases out much more frequently and I really like the fact that it works this way. In this post I describe my deployment processing for Markdown Monster for creating an installer, publishing it on my Web site and creating and publishing a Chocolatey package.
Dealing with Anti-Virus False Positives
October 05, 2016 - Maui, Hawaii
I've been struggling with false positive Anti-Virus warnings for Markdown Monster. In this post I describe what problems I was running into and how eventually managed to get a clean distribution of Markdown Monster out the door.
Windows Updates and Lost Software Licenses and Activations
May 29, 2016 - Maui, HI
Windows Updates often hose Software Activations and Licenses for various commercial software packages. It's a pain in the ass and it's time to let those vendors that use the outdated practice of counting activations based on Windows OS criteria is no longer viable.
Creating Single Instance WPF Applications that open multiple Files
May 13, 2016 - Maui, HI
If you're building document centric applications, Singleton style EXE applications are pretty common. Rather than creating new windows for each opened file, a more common scenario is to open new tabs in a single instance. In this post I'll describe how to create a WPF application that allows only a single instance to run and passes command line arguments passed in secondary instances to the primary instance and I'll describe some pitfalls that you might have to watch out for.
Windows 10 Bash Shell Network Connectivity not working?
April 13, 2016 - Maui, HI
When trying out the Windows 10 Bash on Ubuntu shell, I ran into several problems with networking. Turns out that there are issues with IPv6 and by swapping or removing the IPv6 nameserver entries with IPv4 versions connectivity can be restored back.
Path Environment Editing Improvements in Windows 10
November 18, 2015 - Maui, HI
Windows 10 Update 1 has apparently added a nice improvement to editing environment variables and more importantly added a real list based editor for the plethora of global and private paths that seem to sneak into developer machines and their system PATH configurations.
Windows 10 RTM Upgrade and Driver Update Issues
July 31, 2015 - Hood River, OR
My Windows 10 update from the Insider Previews to RTM did not go smooth. I had a driver issue that apparently was not allowing me to upgrade and Windows 10 doesn't allow for hiding updates. Here's what went wrong and how I fixed it.
Multiple Desktops in Windows
July 10, 2015 - Hood River, OR
Windows 10 natively supports multiple desktops which provides great opportunity for reducing clutter while working and getting stuff done. In this post I show how the new Windows 10 multi-desktop features work and also show how you can use multiple desktops in previous versions of Windows.
Windows 10 Upgrade and IIS 503 Errors
July 05, 2015 - Hood River, OR
After upgrading my machine to Windows 10 today I found that IIS, while working was throwing 503 Service Unavailable errors on every page. Turns out the issue is the Rewrite Module wasn't updated in the upgrade and that's causing a hard crash of the IIS module. Here's how to fix this issue.
Adding Files to the Windows MRU/Recent Document List
April 06, 2015 - Maui, HI
In this post I talk about adding shortcut files to the Windows Most Recently Used (MRU) list that is also used for task bar icon Jump Lists. There are easy APIs that let you add associated files to your application's MRU. With a little extra work you can also read this list inside of your own applications so you can build your application specific MRU lists and let Windows manage the storage of the linked references rather than your own configuration. Here's how.
Updated DeleteFiles Utility now on Chocolatey
March 24, 2015 - Maui, HI
I've updated my DeleteFiles utility that can be used to recursively delete files and folders. I've recently updated the utility with a few new features including support for long paths (greater than MAX_PATH) that can choke out Explorer and other Windows shells. There are also additional options for previewing and recycle bin support as well quiet command line mode and a few improvements in the timeout filter for file selection. Last but not least, you can now install DeleteFiles directly from Chocolatey so it's easy to load DeleteFiles and get it onto your system and system path in seconds.
Capturing Performance Counter Data for a Process by Process Id
September 27, 2014 - Hood River, OR
Process specific Performance Counters in .NET work directly only with Process Names, not Process Ids which can be problematic if you need to monitor performance of multiple instances of the same process. In this post I describe how you can capture multiple processes uniquely and monitor each individually.
Dell XPS 15 review
December 19, 2013 - Maui, HI
I recently picked up new Dell XPS 15 to replace an older XPS machine. Lots of things to like about this machine - here's a quick review of what I liked and didn't.
Modern/Metro Internet Explorer: What were they thinking???
November 04, 2013 - Maui, HI
The 'Modern' version of Internet Explorer in Windows 8/8.1 is a full screen version Internet Explorer with a custom shell around it. This version of IE has a couple of pretty annoying quirks that affect Web pages significantly.
Disable User Account Control On Windows 8
October 01, 2013 - Maui, HI
User Account Control can be a real pain and in Windows 8 there's no easy way to turn it off. However, using Group Policy you can still completely disable it if you decide to do so. Here's how.
HTML5 and CSS3 Editing in Windows Live Writer
July 08, 2013 - Geneva, Switzerland
Windows Live Write is an excellent tool for editing, managing and publishing blog posts effectively. It includes a nice WYSIWYG editor for editing posts which can work off your blog's CSS styling. Unfortunately Live Writer does not use CSS3 or HTML5 as it's stuck using the IE 7 engine for rendering its live preview and editing mode. Here's a workaround to get Live Writer to render your blog theme using HTML5 and CSS3.
Fixing a SkyDrive Sync Disaster
June 21, 2013 - Hood River, Oregon
Recently I ran into a major sync problem with SkyDrive, where SkyDrive decided to update my synced folders with older data from the server, overwriting newer local files. After mangling thousands of files I ended up creating a small utility that lets me look and update these files in bulk. This post discusses the issues and provides a utility to facilitate fixing the problem.
UNC Drive Mapping Failures: Network name cannot be found
April 04, 2013 - Maui, Hawaii
Ran into a nasty issue yesterday trying to map a remote drive via UNC pathing. Basically I was unable to connect with failures occurring instantly and without prompting for credentials even when asking to use different credentials. Turns out the problem is the Network Provider Order - here's more info.
Process.Start() and ShellExecute() fails with URLs on Windows 8
December 12, 2012 - Maui, Hawaii
It appears that on Windows 8 there's a bug in the ShellExecute() API that causes failure in URL navigation when running under Administrative privileges.
A Small Utility to Delete Files recursively by Date
November 30, 2012 - Maui, Hawaii
After again searching for a script or tool that can easily delete files recursively down a folder hierarchy with a date filter and coming up with several 'almost there' solutions I sat down and created a small Console app that handles this task. I've posted the resulting project on Github, with both the binary and source code, in case you ever find yourself with the same need.
Windows 8 Live Accounts and the actual Windows Account
November 19, 2012 - Maui, Hawaii
When you log on with a Windows Live account in Windows 8, what really happens to your credentials? It's not quite obvious, so here are a few thoughts and examples that demonstrate the relationship between Windows and Live accounts.
A tiny Utility to recycle an IIS Application Pool
October 02, 2012 - Maui, Hawaii
Here's a small console app to recycle an Application Pool which seems to be something I've needed to do repeatedly in the past.
.NET 3.5 Installation Problems in Windows 8
August 27, 2012 - Maui, Hawaii
I ran into a major headache with getting .NET 3.5 properly on my Windows 8 install - although installed SP1 was missing and wouldn't properly install. Here's what happened, how to check for the version actually installed and how to work around it.
Make your CHM Help Files show HTML5 and CSS3 content
February 15, 2012 - Maui, Hawaii
Want to get your CHM files to display content in HTML5 and CSS rather than the stock IE7 quirks more rendering used by default? This blog post describes how you can take advantage of newer HTML and CSS specs in your CHM files.
Opening the Internet Settings Dialog and using Windows Default Network Settings via Code
July 20, 2011 - Hood River, Oregon
Most applications that need to use HTTP to go online require some sort of HTTP configuration options to allow for custom network configurations. An easy way to do this is to rely on the default connection settings that Windows provides. Here's how to use the Windows network settings and how to bring them up visually for editing programmatically.
Web Browser Control & Specifying the IE Version
May 21, 2011 - Hood River, Oregon
The Microsoft Web Browser control's default rendering mode is not standards compliant - it's stuck in IE 7 quirks mode even on systems that run a later version of IE such as IE 11. This produces terrible results if you're attempting to use HTML 5 or or CSS 3 markup in your HTML to display. However, the Web Browser control does support using specific versions of Internet Explorer via some registry values that can be set for a specific application. This post shows how to configure your application to work with a specific version of Internet Explorer's rendering engine.
WinInet Apps failing when Internet Explorer is set to Offline Mode
April 20, 2011 - Maui, Hawaii
Ran into a problem with applications using WinInet not being able to connect to the Internet when IE is stuck in Offline Mode. Here's the problem and a code workaround that works at least with the latest version of IE.
ASP.NET Routing not working on IIS 7.0
March 27, 2011 - Maui, Hawaii
Got caught be a difference in behavior between IIS 7.0 and IIS 7.5 with how module management to extensionless URLs are fired in IIS. Routing was working fine on my dev machine, but not on my live server. Here's what you need to watch out for.
Loading Assemblies off Network Drives
March 22, 2011 - Maui, Hawaii
Remote loading of assemblies and CAS policy in .NET have always been hassle and although .NET 4.0 improves security, lightning up rules to be on par with Win32 applications, for COM Interop and custom runtime hosting old rules still apply. Luckily there's some help in the form of a new configuration switch that allows overriding remote loading of assemblies.
IIS not starting: The process cannot access the file because it is being used by another process
March 04, 2011 - Maui, Hawaii
Ran into a nasty problem today with IIS not starting up and the culprit turned out to be: Skype. Here's what the deal is.
No Preview Images in File Open Dialogs on Windows 7
March 10, 2010 - Maui, Hawaii
I ran into a problem with a File Open dialog in Silverlight (but this applies to any Windows File Open Dialogs) where I could not get image previews to work. It turns out this setting is controlled by Explorer Customization settings which is a pain to figure out while tracking down the issue.
Application that won’t Pin to Taskbar in Windows 7
October 08, 2009 - Maui, Hawaii
I've run into a dead end with an application of mine that won't pin to the Windows 7 taskbar. I've tried a number of different settings but I just cannot get the app to show the Pin to taskbar (or any othe of the taskbar context options) to work.
Windows 7 and a Quick Launch Toolbar
August 22, 2009 - Hood River, Oregon
I installed Windows 7 this week after my Vista installation finally started going really whacky while I was in Europe. All things considered Vista has been good – the previous install lasted nearly 2 1/2 years without a repave which is more than any OS I’ve had ever had installed before. The Windows 7 install went fairly smooth for me – no install problems although I screwed myself royally doing...
Editing Applicationhost.config on 64 bit Win2008
August 09, 2008 - Hood River, Oregon
Today I needed to edit ApplicationHost.config only to - well, not find the damn file anywhere on my machine. It turns out 64 bit Windows uses redirection in the System32 folder and while running with a 32 bit Explorer replacement and a 32 bit editor I was unable to find the file until I switch to the stock tools in Windows which are 64 bit.
Moving my Site onto a 64 Bit Server
August 07, 2008 - Hood River, Oregon
I'm finally getting ready to install my new Server and after some back and forth and testing on Windows 2008 I decided to go ahead and bite the bullet and go with the 64 bit version of Server. I've had mixed feelings about installing 64 bit given that I have had exactly zero experience running under 64 bit. I've not really seen a compelling reason on the desktop to run a 64 bit OS especially...
Getting rid of the useless Windows Shutdown Tracker Dialog
August 02, 2008 - Hood River, Oregon
If you install and run or manage a Windows Server OS you've probably run into the annoying shut down dialog. Maybe you have even been hit by walking away after restarting and forgetting about the damn dialog hanging the system before rebooting/restarting. Well, just did that on an install thank you very much. It's not a secret how to get around this and it's easy to fix, but buried deep enough that it's easy to not find it immediately and so not fix it. Here's how.
Sensible Debugging in IE 8
March 06, 2008 - Maui, Hawaii
One thing that caught my attention in the IE 8 notes and that eventually made me download and install it is that it will feature the Developer Toolbar which has been an add-in for previous IE versions as a built in tool. Not only that but IE 8 includes a very FireBug-like debugger that can be easily hooked up to page content. This is a very worthwhile improvement IMHO because the debugging...
IE 8 to support Standards Mode out of the Box - Yay!
March 04, 2008 - Maui, Hawaii
Microsoft announced today on the IE Blog that IE 8 will run in high standards mode by default, which is a complete about face from the previous position that was going to require special meta-tag headers to force the browser to run this way. This is an unexpected, but very welcome turn of events and brings some hope that we'll in our lifetime will have a version of IE that is compliant with the remainder of the browser world.
The long Path to getting an proper cased Path & Filename with Win32
December 06, 2007 - Maui, Hawaii
I'm working through a couple of small bugs in Help Builder today and one issue that's come up is that in some (but not all cases) file selections when inserting images and doing screen captures turn out in inaccurate casing. Images are embedded into the document typically as relative images and the...
Registration Ids: The simpler the better?
August 27, 2007 - Hood River, Oregon
Having gone through easily 50 registration screens in the last few days, reinstalling applications on my new box got me to once again thinking about registration codes in applications. Somebody last week asked me as I provided them with a software key with Help Builder - what's this - this isn't a...
File Locations on Windows Machines = Absolute Madness
August 25, 2007 - Hood River, Oregon
I configured and updated a brand new machine last week and overall the process has been pretty smooth and painless. But once again I'm reminded how silly Windows' scattering of files all over the place really is. I installed the new box on Monday. It's now Saturday night and I'm still picking up a...
Programmatic Printer Driver Installation re-visited for Vista
May 03, 2007 - Maui, Hawaii
A long while back I posted an entry regarding how to install a printer driver programmatically by shelling out and using rundll32.exe to execute the PrintUi.dll which can handle a variety of print tasks including installing a printer driver. This code's been working fine, but it's been giving...