All posts by Ed Tittel

Full-time freelance writer, researcher and occasional expert witness, I specialize in Windows operating systems, information security, markup languages, and Web development tools and environments. I blog for numerous Websites, still write (or revise) the occasional book, and write lots of articles, white papers, tech briefs, and so forth.

KB5031356 Error Calls for KIR

I just got an example of what makes Microsoft’s KIR, aka Known Issue Rollback, useful in the field. A recent story at WindowsLatest recites how an install KB503135  error calls for KIR. (This KB takes Windows 10 to Builds 19044.3570 or 19045.3570.) Some users are getting error code 0x8007000d along with a failed update. Because the problem is apparently of MIcrosoft’s making, they can use KIR to clean things up through WU by pushing an amended update.

When KB5031356 Error Calls for KIR, Then What?

The lead-in graphic provides some important clues to what KIR does (and comes from a Microsoft Community piece entitled How KIR works for the end user). KIR works by loading a configuration change from the cloud. Devices connected to WU (or WU for Business) get notified (settings data to the PCs at bottom). As the same time the new, problem code gets turned off.

MS tries to head trouble off by identifying and pushing out rollbacks before updates get widely applied. As they put it in the afore-linked item “most end users will never see the regressions.” PCs that agree to provide diagnostics info to MS will send information related to the affected code to which the update and regression apply (that’s the diagnostics data in grey). This idea, says MS is “to help us learn how well the rollback is succeeding…”

What About KB5031356 Itself?

The Update rolled out on October 10 (last Tuesday). Reports started appearing immediately. Apparently, MS pushed the rollback on or around October 12. They say it takes 48 hours for the rollback to interact with updated PCs, so that would indicate users who attempted updates between October 10 and October 14 (Friday) could be affected. Those who do fall prey to the error, according to WindowsLatest, should be able to recover using the DISM … /RestoreHealth command.

The error didn’t bite me, even though I updated on Patch Tuesday. But by now, it should be fixed. Worst case, one could uninstall the original KB then re-install the by-now patched version. That should work!

Facebooklinkedin
Facebooklinkedin

X12 Upgrade Quit Halfway

Yesterday morning, I tried to remote into my Lenovo ThinkPad X12 Hybrid tablet. No go. I got the familiar error “Remote Desktop can’t find the computer…” Interestingly, when I went to restart that PC, nothing happened. Eventually I had to disconnect all cables, then hold the power button down for a full 60 seconds to force it to reboot. Then I remembered: I hadn’t touched the machine since the 25967 upgrade hit on Tuesday. That means the X12 Upgrade quit halfway through the process and didn’t come back up after the reboot.

If the X12 Upgrade Quit Halfway, Then What?

Poking around on the Lenovo website, I found an evocative forum post. It was entitled “Laptop suddenly shuts down, won’t turn on.” It confirmed something odd was up, and prevented the PC from restarting. And indeed, my approach (disconnecting all cables, holding down the power button for 60 seconds) is just what the forum rep recommended to the poster, too.

When all else fails, this is one way to get a Lenovo PC to restart normally. And sure enough, once the PC did get far enough along to tell me what it was doing, it showed the spinning circle and progress that goes along with finishing up an upgrade or update install.

Just for grins, I opened up Reliability Monitor on the X12. I found a shutdown error staring me in the face. The detail reads: “The previous system shutdown at 5:55:00 PM on 10/10/2023 was unexpected.” Last Tuesday, at the end of the working day, just when I wouldn’t notice that the X12 failed to come back from the pending reboot during the update process. Go figure!

There’s proof that the PC shutdown when it shouldn’t have.

Speculating on Causes…

This device is attached to a CalDigit TS4 hub for power, GbE, video and storage. I’m wondering if something about that kind of complex USB-C/Thunderbolt 4 connection might not complicate boot-up. OTOH, I’ve upgraded plenty of times before on the same overall rig without difficulty. That’s what keeps things interesting, here in Windows-World.

Facebooklinkedin
Facebooklinkedin

Syntax Errors Derail PowerShell JSON Edits

I’ve just completed a fascinating project for TekkiGurus: a five-part series on customizing and extending Windows Terminal. For the 5th and final part, I decided to build PowerShell scripting that would handle such customizations I use as don’t fall under the settings.json umbrella. Ironically, one of those tasks involved editing that very file to change the default font. That’s when I saw syntax erors derail PowerShell JSON edits, as shown in the lead-in graphic. Let me explain…

How Did Syntax Errors Derail PowerShell JSON Edits?

I started off my project by asking Copilot to present me with some initial PowerShell commands to handle the following tasks:

1. Download, install and set up Jan DeDobbeleer’s outstanding OhMyPosh prompt customization tool. This turns out to be a more complex task than it might seem, because it requires downloading, unzipping and copying Nerd Fonts into C:\Windows\Fonts, adding an invocation to the PowerShell Profile script, dealing with OhMyPosh, and then selecting a Nerd Font as the WT default.

2. Download, install and add the colortool executable to a default Windows path. Colortool is a GitHub project that provides information about Windows Terminal color assignments for text and text backgrounds. This one was pretty straightforward.

3. Install the winfetch utility that shows WT color schemes, system info, text colors, and a few other odds’n’ends. This required only one line of code, so easy-peasey.

The error showed up at the end of my PS sequence for the OhMyPosh tasks (I’ll refer to this as OMP from now on). Seems that Copilot’s code included two errors that it took me some time to find. First, the object sequence for the default font that OMP required turned out to be the string “.profiles.defaults.font.face” rather than the truncated version that Copilot provided (“.profiles.defaults.font”). Also, it used an alias for the default Nerd Font I chose rather than its full name — that is “CaskaydiaCove NF” instead of “CaskaydiaCove Nerd Font”. Interestingly, this alias worked in Windows 10, but not in Windows 11 (there, only the full name would do).

Errors Found Are Easily Fixed

It took me a while to figure this out because I couldn’t find exact documentation to match my problems precisely. I figured out the object sequence by examining the json.settings file from another Windows PC that had the default already set and following the sequence of the object name hierarchy in use in that file. In other words, I noticed a face property in that file that was missing from my rewritten json.settings file. No wonder it wouldn’t save.

Once I made that change, I got another error message (from Windows 11) that reported it couldn’t find a font named “CaskaydiaCove NF.” I so looked in C:\Windows\Fonts, and sure enough the font name in Explorer is actually “CaskaydiaCove Nerd Font.” And again, once I made that change things worked properly.

As the old saying goes: “It’s always easy when you know how.” It took me a while to get to the last detail in the “how” part, but indeed, it was dead easy after that. Things go that way a lot in Windows-World, especially when writing code or command line instructions. I’m just glad it’s working now!

One More Thing: Replacing Munged JSON File

On the machine where I made the object reference error, settings.json remained munged. It kept throwing errors each time I started up WT or PowerShell. So I  researched the topic and learned that if you open settings.json in a text editor, then delete the whole thing, WT will rebuild that file from programmed defaults when an empty file gets saved. That put my WT and PowerShell environments back to rights, and I was then able to get the corrected script to run to completion on that PC.

I’ll observe that if you’re going to edit settings.json in PowerShell on a Windows PC, it’s a good idea to have a backup at hand to replace that file. I’m learning that it’s kind of like working on the registry, where changes can have even more serious and dire side effects. Cheers!

Facebooklinkedin
Facebooklinkedin

Recent Windows Terminal Follies

It’s always a humbling experience to work and work with Windows. This week, I’ve been relearning how Windows 10 works with Windows Terminal (and sometimes doesn’t). I had to stand up a squeaky clean Windows 10 instance in a VM for some WT testing and research. Tongue planted firmly in cheek as I went through some recent Windows Terminal follies, I realized I’d forgotten more about WT than I’d ever known. Let me explain…

History Underlies Recent Windows Terminal Follies

Today, my production Windows 10 installation has been running since 2016, when I stood up my present primary desktop PC. There have been a LOT of changes to Windows since then. And indeed, Windows Terminal (WT) is one of the things that has changed the most. But because I’d gone along with those changes — growing more experienced and wise to the ways of WT — I really didn’t remember all of the little twists and turns along the way.

Thus, installing a clean Windows 10 OS image came as a series of shocks where WT was concerned. Let me list a few of them:

1. Windows 10 made its Insider Preview debut in 2014, WT didn’t come along until May 2019. Thus, it’s not set as the default command line environment in Windows 10.

2. WinKey+X, to my consternation, kept launching an older PowerShell version (v5.1.19014.3570). And the only version of WT present was an older Preview that I didn’t want.

3. Thus, I found myself visiting the MS Store to grab the latest copy of WT, installing it, then setting it as my default terminal application (see lead-in graphic: notice further than this version needs an upgrade).

Eventually, I got things sorted and where I want them to be. But it did come as something of a shock to understand how much change I’d been introducing to my desktop runtime, step by little step. Only when I had to jump the whole stretch in a single bound did I see how far things has really come.

Some Unexpected MSA Bonuses Also Present

OneDrive picks up files from my User folder as part of what it keeps in the cloud. Apparently this includes my PowerShell Profile, because an invocation to OhMyPosh showed up as I fired off the new WT install for the first time. That made setting up OMP even faster and easier than usual.

The moral of today’s story is that one doesn’t really recognize how far one has come (or how much things have changed) until one is forced to recover the same ground and see what’s different. That’s one good reason why — for me, at least — Windows-World is always an adventure.

Facebooklinkedin
Facebooklinkedin

WT Update Requires Application Restart

In the wake of the latest Patch Tuesday, MS has released an update for Windows Terminal. As it works its way through the upgrade process it makes two identical warnings: “Restart the application to complete the upgrade.” If you look at the lead-in screencap, you can see that because I hadn’t yet closed, then re-opened WT it’s still showing the old version in the list sub-command at the bottom of the PS session. As I’ll explain, WT update requires application restart before the upgrade truly takes effect.

Why WT Update Requires Application Restart

Indeed, the WT update requires users to close all open WT windows and then open a new one. That’s  so it can terminate the (old) running WT process(es). These are, of course, still running the 1.18.2681.0 version. When they’re all closed, the pointer switches to aim at version 1.18.2822.0 instead. Then, when you fire off a new WT instance, it’s running that new version, as you can see in the About info here:

WT Update Requires Application Restart.About-info

After the open/close, the new WT version number pops up in About.

As I’ve explained in a number of recent blog posts here (see this September 28 item as an example), self-update activities can be tricky. The cleanest way to handle this kind of thing is to request users to kill the current running instance after installing a new one. That way, it makes a cleaner hand-off from old to new, and provides a “quiet moment” between when the old and new instances start running to handle the housekeeping involved (changing file pointers, registry entries, environment variables, and so forth).

Still Waiting On Winget to Follow Suit

I’d like to see the Windows Package Manager/App Installer tool known as winget follow Windows Terminal’s lead when it comes to updating itself. Indeed, winget upgrade Microsoft.Winget.
Source_8wekyb3d8bbwe does work. That said, it’s a Store app so mostly this gets handled automatically in the background during its daily update cycles.

But when winget updates itself, even though it succeeds it often ends in a status labeled “Cancelled.” That’s not really true, but it is a valid indicator of the kinds of tricky things that self-updates can do (and cause). I’d like to see it take the same approach as WT, hold itself in abeyance, and let users re-jigger the works to make the transition from old to new versions neat and clean. Is this a pipedream? I hope not!

Facebooklinkedin
Facebooklinkedin

Reboot Fixes Winget Hiccup

I have to laugh. If you take a look at the lead-in graphic you might be tempted to believe something amiss with winget. I was yesterday when this happened on one of my test PCs. So naturally, I tweeted (X’ed?) an MS colleague who runs the winget team. About 5 minutes later he responded with “Try a reboot!” Seems that others had been reporting similar woes amenable to this approach. To my chagrin, indeed a reboot fixes winget hiccup — this time, at least. Sigh.

If Reboot Fixes Winget Hiccup, Then What?

That adds another thing I need to try before bothering the developers another time. And, if that works for me (and some few others), it might also work for you, too. Thus, it should become a part of the normal troubleshooting routine.

Indeed, I had closed and re-opened Windows Terminal prior to contacting the team. And it hadn’t done the trick this time. In fact, I even uninstalled and reinstalled winget and that hadn’t worked, either — as you can see in the lead-in graphic.

Had I known then what I now know, I would’ve tried the reboot before those other more severe fixes. And it would have worked. Thus, the next time winget goes wonky on me (especially after an update) I’ll be sure to reboot my PC and trying again before sounding the alarm.

Interesting, eh? Things may not always look simple or obvious in Windows-World. Thank goodness they may sometimes be both, and amenable to a simple solution. All hail the “three-fingered salute” (remember when CTRL-ALT-DEL would force reboot a PC?) There’s no school like the old school!

Note Added October 10 (early PM hours)

As fate would have it, MS pushed an update to PowerShell today for version 7.3.8 through WU. After it updated my problem test PC, the same issue recurred: winget source was essentially not working. None of my previous fixes (reboot, uninstall & reset sources) worked. I had to force install the current production version (1.6.2771) over the current preview version (1.7.2782) to get things working properly again. Funny that this problem should happen on the very day I attempt to document a different issue. Amazing!

Facebooklinkedin
Facebooklinkedin

Win7/8 Key Loophole Closes

On September 29, I reported that one couldn’t upgrade from Windows 7 or 8.1 to 10 or 11 any more.  But, one could still activate a clean install of 22H2 using their keys. As of yesterday, I can conclusively say: “No more!” I used an older key to get through install yesterday. But this morning, the desktop said Windows 10 needed activation. Thus, I’m now convinced the Win7/8 key loophole closes at long last.

More About Win7/8 Key Loophole Closes

Interestingly, the activation servers have to grind for quite some little while. It takes 25-35 seconds before they come back to disqualify older keys. If you hand them a newer one (I tried both retail and MAK keys for Windows 10 and 11) activation comes in 3-4 seconds. There’s obviously a lot of behind-the-scenes checking going on.

That said, the Windows 11 Pro VM I stood up last week using a Windows 7 Ultimate key is still running. In fact, it still shows “Active” as its current activation state. I’m speculating freely when I say this, but that tells me the loophole has been closed later, rather than sooner. We’re unlikely to get official commentary from MS on this one way or the other, so take my supposition for what it’s worth!

It’s Been a Long Time Coming…

Ever since the door officially closed on upgrades from and activations of older keys back in 2016 (7 years ago), we’ve all known this day was coming. Now it’s here. Gosh, it was terrific while it lasted, though, because I never had to worry about running out of keys for throwaway VMs and test installs. I guess we’ll all have to be more careful going forward. I’ll also make more frequent use of the various 90-day eval VMs that MS generally makes available as well.

 

Facebooklinkedin
Facebooklinkedin

New Windows 11 Settings Home

With the latest Canary build (Windows 11 23H2 25967.1000) we see a new Home pane for the Settings app. This new Windows 11 Setting home is hugely different from Windows 10 (see below). But those keeping up with ongoing updates to production 11 won’t see much difference.

New Windows 11 Settings Home.win10home

Windows 10 Settings home is a simple icon table.

What About New Windows 11 Settings Home?

Compared to older production versions, there’s a little more graphics pop (certainly, it’s a lot more visually appealing than Windows 10, to be sure). But MS has been backing these changes into current 22H2 versions as they introduce them in Insider Previews labeled 23H2 as well. That makes it a little harder to tell exactly what’s what.

So I’ll turn to the Canary Channel 25967 release announcement for clarification. Here’s what it says:

We created interactive cards that represent various device and account related settings, grouped by commonly accessed functions. Each card is optimized to offer the most relevant information and controls at your fingertips. In this release, you’ll see up to seven cards, with more coming soon.

Here’s an overview of each card:

  1. Recommended settings: This card adapts to your specific usage patterns, providing timely and relevant settings options. It’s designed to streamline your settings management and save you time.
  2. Cloud storage: Gives you an overview of your cloud storage use and lets you know when you’re nearing capacity.
  3. Account recovery: Helps keep your Microsoft account more secure by helping you add additional recovery info so you never get locked out of your account, even if you forget your password.
  4. Personalization: Brings customization to the forefront by offering one-click access to update your background theme or change your color mode.
  5. Microsoft 365: Provides a quick glimpse of your subscription status and benefits, along with the ability to take some key actions right in Settings instead of going to the web.
  6. Xbox: Similar to the Microsoft 365 card, you’ll be able to view your subscription status and manage the subscription from the Settings app.
  7. Bluetooth Devices: To simplify your Bluetooth device management experience, we’ve brought this to the forefront so you can quickly access and connect to your favorite Bluetooth-enabled devices.

You can take swift actions directly from this page with just a click, making device and account management seamless and efficient. What sets the homepage apart even further is that it’s more than just a landing page—it evolves and learns with you.

Overall, I like the design and layout. It certainly shows and does more than the “icon directory” model for Windows 10. But with other Windows 11 versions either already in synch or catching up soon, it’s not as much of a surprise as I was expecting.

Who knows? Maybe that’s a good thing… I’ll be watching to see how Windows 11 learns from my behavior and usage to make changes. There may very well be some surprises — hopefully, good ones — in that mix. Stay tuned!

Facebooklinkedin
Facebooklinkedin

Gaining New Windows Backup Experience

As I prepare for an update to my Windows 10 and 11 Backup story for ComputerWorld, I’m working with a trio of free  image backup and restore tools. I’m unfamiliar with them so it’s as much about climbing the learning curve as anything else. As I’m gaining new Windows backup experience, I’m starting to appreciate Macrium Reflect (MR) even more than I already had. Let me explain…

Lessons from Gaining New Windows Backup Experience

Finding out where information resides and how to extract it is always an interesting proposition. For EaseUS ToDo, for example, the only way I’ve been able to get detailed completion times for backup jobs is to dig into the logs and File Explorer. My last image backup for C: took 9:40 to complete and created a ~75 GB image file.

It could be that I just don’t know where else to look for that data. But I can now tell you that MR reports it routinely at the conclusion of each backup job. I can also tell you that backing up the same PC, same target drive finishes in under 3 minutes using MR (more than 3 times as fast). That said, I do see that upgrading to the paid-for EaseUS ToDo version offers faster performance. But the ongoing stream of ToDo ads and upgrade nags is constant and, IMO, annoying.

More Experimentation, More Observation…

I’m setting up two more test PCs with AOMEI Backupper and MiniTool Shadowmaker. I’ll be doing likewise in the days ahead. My ComputerWorld story is due in just under a week, so I’m starting to get serious. Wish me luck!

Facebooklinkedin
Facebooklinkedin

Using Copilot Based PowerShell

As an experiment, I’m using Copilot to generate PowerShell commands to complete specific tasks. It’s all centered around scripting to customize Windows Terminal to add fonts, applications, and settings for a specific configuration. Using Copilot based PowerShell isn’t just a “load and go” operation. I’m having to understand and alter code to make sure it runs on both Windows 10 and 11 PCs. So far, I can’t say it’s faster than hacking it out from scratch. But I can say “very educational.”

Using CoPilot Based PowerShell, Step by Step

I’m stepping through the PowerShell code that Copilot presents for handling my specified tasks line by line. In some cases, I’m simplifying by making more direct assignments to variables and manipulating them in the scripts. In other cases, I’m cleaning up minor syntax violations (quotes around string values where they’re not needed, and so forth). In still other instances, I’m figuring out how to complete commands “silently” (supressing user interaction).

But most of what I’m getting is pretty usable. As somebody who’s written plenty of “real code” (Java, JavaScript, Perl, Python and more) this is an interesting way to expand my PowerShell chops. If you’ve got some minor automation to handle — that’s how I’d characterize my current quest — you might find this helpful, too.

Fruits of This Labor…

I’m working on a story for TekkiGurus. I will probably finish up this week, but it takes two-three weeks to get through the editorial pipeline. Thus, you should see a story there from yours truly near month’s end (October 2023, that is). My working title is Creating and Sharing Windows Terminal Profiles Across PCs. Stay tuned, and I’ll plug a link in (and correct the wording, if need be) when it’s up.

Facebooklinkedin
Facebooklinkedin