Rick Strahl's Web Log
Wind, waves, code and everything in between...
Ad-free experience sponsored by:
- the market leader of .NET and Java APIs for file formats – natively work with DOCX, XLSX, PPT, PDF, images and more
WebLog Posts in Category Windows
November, 2018 (2)
October, 2018 (2)
September, 2018 (1)
August, 2018 (2)
July, 2018 (1)
June, 2018 (3)
May, 2018 (2)
April, 2018 (2)
March, 2018 (1)
February, 2018 (1)
January, 2018 (1)
December, 2017 (2)
November, 2017 (4)
October, 2017 (2)
September, 2017 (6)
August, 2017 (1)
July, 2017 (3)
June, 2017 (2)
May, 2017 (2)
April, 2017 (4)
March, 2017 (5)
February, 2017 (2)
January, 2017 (4)
December, 2016 (5)
Visual Studio (49)
ASP.NET Core (30)
Web Services (19)
Web Api (16)
.NET Core (11)
Sql Server (9)
Microsoft AJAX (8)
Web Connection (7)
West Wind Ajax Toolkit (7)
Entity Framework (6)
Internet Explorer (6)
Html Help Builder (5)
Live Writer (5)
Source Control (4)
Markdown Monster (4)
Help Builder (3)
Web Browser Control (3)
Software Development (3)
Visual Studio Code (2)
ASP.NET vNext (2)
ASP.NET Markdown (1)
Visual Studio (1)
.NET Standard (1)
Dynamic Types (1)
Control Development (1)
Web Assembly (1)
Web Deployment Projects (1)
Web Design (1)
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...