Blog

{WED} Winkey R Directly Accesses Settings Pages Using URIs

Here’s another item under the “I didn’t know you could that in Windows 10” heading. This time, it’s a series of shortcut commands to access the vast majority of panes within the Settings UWP app. That’s right: if you open the Run Box, Winkey R directly accesses settings pages using URIs. Thus, for example simply typing ms-settings: in the run box opens the home page for the settings app. Things in this realm are a little tricky though, because not all of these strings are predictable. Thus, for example ms-settings:network launches the Network & Internet home pane. But neither ms-settings:system nor ms-settings:devices gets you past the home page for Windows Settings. This is more of a recipe or incantation, then, than it is a predictable use of obvious strings. What’s a power user or admin to do?

Winkey R Directly Accesses Settings Pages Using URIs.nodevices

Looks like a reasonable guess, but doesn’t work as you expect (you get the Home page shown at the top of this story, instead of the Devices pane).

Details for Winkey R Directly Accesses Settings Pages Using URIs

There’s a “magic reference” available in Microsoft DOCs that provides the necessary collection of usable strings. They’re organized by category, alphabetized (Accounts, Apps, Cortana, Devices, and so forth). Find them in a subsection of a document entitled Launching, resuming and background tasks named Launch the Windows Settings app. I forbear from reproducing the full list of entries you can find in this document, because there are over 200 strings that start with ms-settings: that you can use in the Run box to produce any of a plethora of Settings panes and pages.

Instead, I suggest you bookmark the link to the Launch the Windows Settings app page, and spend some time getting to know its contents. There’s a lot of useful stuff in there, so your investment of time and in play/experimentation should be amply rewarded. Good stuff, in fact!

[Note:] Once again, thanks to Sergey Tkachenko for posting an item on this topic at WinAero.com. It’s entitled MS-Settings Page List of URI Shortcuts in Windows 10. Most of it recites the strings that work in the Winkey-R/Run box environment. As you chew it over, I hope you’ll see why I pointed to the master reference at MS DOCs instead. Sigh.

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

Identify Active Win10 Network Adapter

I’m a big fan of the long-deprecated Windows Gadgets, which date back to the Vista era. Thanks to excellent work from Helmut Buhler (@8GadgetPack on Twitter) you can download his 8GadgetPack quickly and easily. This morning, however, I noticed that the Network Meter gadget was not reporting on network activity. Closer inspection showed two different network adapters queued up: one for outbound traffic, one for inbound. I knew this had to be wrong, because I’ve got an RJ-45 cable plugged into only one of the two GbE interfaces on my production PC. “But which one is active?” I asked myself. And that’s how I needed to identify active Win10 network adapter on my PC, to put the gadget back to work. Here’s what I saw in Network Monitor, to begin with:

Identify Active Win10 Network Adapter.netmon-nada

With no traces to indicate network activity, despite an assigned IP address, I knew Network Meter was checking the wrong NIC.

Which Tools Identify Active Win10 Network Adapter?

Turns out you have a lot of choices to identify the active network adapter on a Windows 10 PC. I found 4 methods very quickly, and all agreed that the Intel I211 adapter was handling my active Ethernet connection. Here’s a snippet of what I saw in Settings → Network & Internet → View your network properties. Or, you can right-click the network icon in the notification bar, and select Open Network & Internet settings as an alternate entry point.

Identify Active Win10 Network Adapter.settings

Alas, one must scan to the bottom of this verbose collection of info to see “Connected to Internet,” which is what I was looking for.

This showed me that of the two NICs present on this motherboard — an Intel I211 GbE and an Intel I219V — the I211 was the active interface. But plenty of other method presented to me to provide this information, including:
1. NirSoft’s AdapterWatch tool, which presents the data in a horizontal table, and makes status obvious with an Operational Status value of “Operational” for the I211 and “Non Operational” for the I219V (not to mention the presence of IPv4 addresses for the active one, and none for the other).
2. The PowerShell cmdlet get-NetAdapter showed me everything I needed to know in compact, easy-to-read form.
3. Gabe Topala’s SIW Home (a subscription favorite for which I’ve been paying $49 a year for 10 instances for over a decade now) shows the I211 as “Connected” and the I219V as “Disconnected.”

Of these other methods, I’ll probably use the PowerShell get-NetAdapter method going forward should I find myself in this boat again. I can launch PS7 using the Winkey-X key sequence, and type the cmdlet name lickety-split. Here’s what it shows me:

Identify Active Win10 Network Adapter.ps7-getnetadap

Quick to run, easy to read, immediate access to the relevant status (“Up”). Works for me!
[Click image for full-sized view.]

Acting on the Information in Network Monitor

With the information that the I211 was connected to the Internet, I jumped into the Network Monitor’s controls and made sure it was selected under the “For Speed” and “For Internal IP Address” fields. I also turned off auto-detect and selected “Wired Network” as my Network Type. Immediately afterward, the gadget started working again, like so:

Identify Active Win10 Network Adapter.netmon-working

OK then: that’s what I’m after. Active download (yellow) and upload (green) traces on the timeline, and count values below.

Fixed!

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

When Driver MIA After Upgrade Try Pick from a list…

My Lenovo X380 Yoga constantly presents me with the same problem after each Feature Upgrade. And because that PC is hooked into the Fast ring for Insider Previews, that means it happens once every week or two. Instead of a working Synaptics WBDI-SGX fingerprint reader. I get a yellow exclamation point in Device Manager for that item. Further detail indicates it was unable to load the device driver properly. After long and repeated experience with this error, I’ve learned that the following “click sequence” will set things right. First, I right-click into Update drivers → Browse my computer for drivers → Let me pick from a list of available drivers… Only one driver shows up as a result, and it’s the very one I need. That why I say when driver MIA after upgrade try Pick from a list… Here’s what that looks like:
When Driver MIA After Upgrade Try 'Pick from a list...'

Click the desired entry to highlight, then click Next to install that driver. When there’s only one entry, there’s only one possible item to choose, too.
[Click image for full-sized view.]

If When Driver MIA After Upgrade Try Pick from a list… Doesn’t work

Of course, it’s not always this easy to fix an MIA driver following a feature upgrade. That’s why it’s a good idea to use DISM to export your current (presumably working) set of Windows 10 drivers before a major upgrade. My good friend and Win10.Guru partner Kari the Finn explains all this in a TenForums tutorial. It’s entitled DISM — Add or Remove Drivers on an Offline Image, and addresses the important stuff in Step Two: Get drivers: Export. That might do the trick, as long as you (or Windows) can recognize the right sub-folder to search for the good stuff.

On a Lenovo laptop, you can also grab drivers from their Support pages . Shoot! Their Vantage app may be able to find and install the missing item for you, using its System Update function. Or you can search for the driver manually. This takes me to a Fingerprint reader page, where I see the Synaptics WBDI device that I need.

When Driver MIA After Upgrade Try 'Pick from a list...'

If all else fails, I can always grab the driver from the Lenovo download pages.
[Click image for full-sized view.]

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} Windows 10 Power Options Include NVMe Idle Timeout

Here’s another factoid that falls under the heading of “I didn’t know Windows 10 could do that.” In this case, the particular widget in question is Power Options (Control Panel). The right PowerShell command or its equivalent Registry tweak makes an NVMe item appear. Actually, this item occurs under the Hard Disk entry. Its full name is Primary NVMe Idle Timeout (see below). In fact, it defines an idle timeout value for an NVMe SSD in the boot/system role.  Hence my post title: Windows 10 Power Options Include NVMe Idle Timeout. Here’s how it looks:

Windows 10 Power Options Include NVMe Idle Timeout.nvme-info

Until you enable this attribute (PowerShell) or set the right RegKey value, you won’t see this in Power Options.

In case you didn’t already know, NVMe stands for Non-Volatile Memory Express. Usually, it’s a kind of flash memory that might be a solid state disk (SSD), a PCIe add-in card, an M.2 card, or something similar. NMVe is incredibly popular because it’s fast and increasingly affordable. Nearly all of my newer systems boot from an NVMe drive. Lots of vendors make NVMe drives. Right now, my systems include such drives from Samsung, LiteOn and Toshiba.

Make Windows 10 Power Options Include NVMe Idle Timeout

In fact, to see this entry in Power Options, you must reverse Windows 10’s default setting. Thus, the operative part of the command string reads -ATTRIB-HIDE. The minus sign does the magic that makes the entry appear. You can cut and paste the whole string (shown below)  into PowerShell. For illlustration, it’s also shown in the screencap that follows the command-line text input.

powercfg -attributes SUB_DISK D639518A-E56D-4345-8AF2-B9F32FB26109 -ATTRIB_HIDE

Windows 10 Power Options Include NVMe Idle Timeout.ps

Entering the command gives zero feedback, but the change shows up immediately in Power Options.
[Click image for full-sized view.]

 The following command string makes this NVMe entry invisible in Power Options:

powercfg -attributes SUB_DISK D639518A-E56D-4345-8AF2-B9F32FB26109 +ATTRIB_HIDE

Of course, the only difference is the plus sign in the final command element. The preceding value is a GUID for this particular Power Options setting.

Do It in the Registry, If You Prefer

The name of the corresponding registry key is, in fact, the afore-cited GUID. The highlighted Attributes value controls if the NVMe item is visible in Power Options. Here again, a value of 0 makes the option visible; 1 makes it disappear. String alert! The fully-qualified registry key name is:

HKLM\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-9041-4b5d-9b77-535fba8b1442\d639518a-e56d-4345-8af2-b9f32fb26109

Just for the record, HKLM is a common abbreviation for HKEY_LOCAL_MACHINE. For better visualization, here’s a screencap of all that good stuff:

Windows 10 Power Options Include NVMe Idle Timeout.regedit

The complete registry location occurs just below the command menu line, and includes two (2) GUIDs in its path.
[Click image for full-sized view.]

Once again, a value of zero (0) for Attributes means the NVME timeout item shows up in Power Options. A value of one (1) means it’s hidden.

Does NVMe Idle Timeout Really Matter?

Looking at the default value (200 ms), I’m inclined to think not. That’s so fast that altering the value won’t affect the PC much (or at all). But it’s always interesting to learn something new about Windows 10. There’s a lot more going on in general, and in Power Options, than one might think. And who knows? Someday, this tidbit may come in handy.

[Note] Thanks, Sergey Tkachenko/WinAero.com for covering this topic. He posted on this topic sometime in the last 24 hours. (Alas, his posts aren’t dated.) Check it out: it’s entitled Add Primary NVME Idle Timeout to Power Options in Windows 10. Bolshaya spaciba, Sergey!

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} Diagnosing Dead Windows 10 USB Flash Drives

I’ve probably owned 100+ USB Flash Drives (UFDs) over the years. In that entire time, I’ve had exactly three of them fail. My most recent failure occurred on Monday (March 16). This happened as I tried to build a 1909 bootable installer using the Media Creation Tool. The OS  downloaded successfully. But before the UFD finished building, MCT errored out (“There was a problem running this tool” as shown below). After a second failed try, I found myself diagnosing dead Windows 10 USB flash drives. This time around, the death was irreversible and indisputable. I’ll explain what I found so others can benefit from this experience.

Diagnosing Dead Windows 10 USB Flash Drives.wct-error

The error message doesn’t identify media as the problem explicitly, but it clearly identifies a problem and it fails to complete.
[Click image for full-sized view.]

Error Message Helps Diagnosing Dead Windows 10 USB Flash Drives

The error code is 0x80042405, so I turned to the Microsoft Error Lookup Tool for more information. The following PowerShell session screencap shows what it told me, which was both interesting and mysterious.

Diagnosing Dead Windows 10 USB Flash Drives.melt-output

Error message lookup reports a problem with the target disk, with key term “unsupported configuration.”
[Click image for full-sized view.]

I got my next real clue when I tried to find the UFD in Disk Management. It failed to finish loading until I removed the UFD. Obviously, it was having issues recognizing the drive. Then I loaded up MiniTool Partition Wizard (MTPW) and got the following information: “Bad disk.”

Diagnosing Dead Windows 10 USB Flash Drives.bad-ufd

MiniTool Partition Wizard calls out the UFD’s condition as a “bad disk.” That can’t be good!
[Click image for full-sized view.]

None of MTPW’s built-in facilitiees — partition recovery and data recovery, to be more specific — could find any files on the device. There was no path to recovery or reformatting at all. As a last ditch effort, I tried HDD Guru’s HDD LLF Lower Level Format tool (aka HDDLLF.4.40.exe). It couldn’t do anything with the UFD, either. To me that proves conclusively that this UFD is dead, dead, dead. End of story, except to observe that I paid less than US$10 for this 16GB Mushkin ATOM device, so it’s a tolerable loss. Next!

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} Microsoft Technet Gallery Retires June 2020

Here’s an interesting news item. On March 9, Robert Outlaw, Lead Program Manager, Docs.Developer Experience posted the immanent retirement of the Microsoft Technet Gallery. This is a long-time “public space” in the Microsoft DOCs web pages. Here, Microsoft MVPs, developers and community members have made a collection of over 25,000 PowerShell scripts for all and sundry server and desktop management tasks. But according to Mr. Outlaw, the Microsoft Technet Gallery retires June 2020. As the snippet at the head of this story says, the exact date for retirement is still TBD.

Technet Gallery Retires June 2020

Technet Gallery retirement post header info

[Click here for full-sized view.]

If Microsoft Technet Gallery Retires June 2020, Then What?

Having just delved into a Wayback Machine site snapshot from March 16, 2020, I see that the site is HEAVILY archived there. In fact, I couldn’t find a single page that wasn’t already present in that online archive. Interestingly, getting to the leaf (script) level in the Technet Gallery is like time travel. That’s because you’ll go back to the latest update to the script page itself when you navigate that far in the gallery. Thus, for an AD script named List all groups or users in an OU, I found myself back to October 2015.Under Networking, a NAT Detection script links to a September 2015 page.

I could go on and on, but I’m sure you get the idea. It is: while you may not be able to access the Technet Gallery pages live through Microsoft Docs come June 2020, that’s not really a problem. You’ll still be able to get to the archive through the Wayback machine. As far as I can tell, what’s available there is a full, faithful and complete copy of the whole shebang. Simply change your favorite for this valuable scripting resource to the last, best and final Wayback Machine snapshot taken just before MS pulls the plug. That way, you’ll retain access to its contents. When MS announces that date, I’ll provide a link to that ultimate snapshot as an addendum to this blog post.

Stay tuned!

[Note:] Here’s a shout out to Martin Brinkmann at ghacks.net. His story Microsoft announces retirement of the TechNet Gallery (and all its scripts) clued me into this upcoming retirement. Thanks, Martin: immer nochmals “Vielen Dank!”

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} Freezing Visual Basic Signals Impending EOL

Surprise! An interesting item showed up on the Microsoft Devblogs on March 11 (Wednesday). Innocuously enough, it’s entitled “Visual Basic support planned for .NET 5.0.” To begin, the story explains that Visual Basic will get a bunch of capabilities to support .NET 5/.NET Core. Next, it proffers a list of new application types, and benefits of long-term stability. Then comes an interesting paragraph. Its import is that MS freezing Visual Basic signals impending EOL (End-of-life) for this language. Here’s what I’m talking about. (I added the bold emphasis):

Going forward, we do not plan to evolve Visual Basic as a language. This supports language stability and maintains compatibility between the .NET Core and .NET Framework versions of Visual Basic. Future features of .NET Core that require language changes may not be supported in Visual Basic. Due to differences in the platform, there will be some differences between Visual Basic on .NET Framework and .NET Core.

Freezing Visual Basic Signals Impending EOL.oldlogo

Here’s what the Visual Basic (aka VB) logo looked like back in the day. Microsoft Basic first appeared as Altair Basic in 1975!
[Click image for full-sized view.]

What Freezing Visual Basic Signals Impending EOL Really Means

Once upon a time, Bill Gates dropped out of Harvard to jump into computing. He and a Seattle friend, Paul Allen, founded Microsoft on April 4, 1975. Their very first product was a BASIC interpreter for Altair 8800 microcomputer. Later its name became Microsoft Basic. Later still, that changed to Visual Basic. And now, the end of its continued growth and support is in sight.

Gosh! Talk about the end of an era. In fact, it’s more like the the end of one universe, and the beginning of another. Honestly, I see it as a telling sign — amidst a raft of other, similar but lesser signs. Thus, there’s no doubt that Microsoft has reinvented itself completely. Azure and the cloud really do rule this roost, and that’s where Microsoft now lives. The rest of us are just catching up.

Personally, my first encounter with Basic came as a CompSci grad student at UT Austin in 1979. Many years later, I helped teach 5th and 6th graders Microsoft Small Basic at Cactus Ranch Elementary. This happened in 2015 and 2016 through their programming club. (In fact, my son was a participant, and I wanted to help out.) To me, it’s ironic that the URL for Small Basic is https://smallbasic-publicwebsite.azurewebsites.net/. The new already encapsulates the old. Soon, the new will leave the old behind completely. All I can say is: Wow!

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} Warning! Latest GeForce 442.59 May Cause BSOD

I’ve seen it before, and I’ll probably see it again. I just updated my production desktop to the latest GeForce driver, and it threw a BSOD. It’s one of the “mystery codes,” too: SYSTEM_EXCEPTION_THREAD_NOT_HANDLED. But when I say that the latest GeForce 442.59 may cause BSOD I already know what’s causing it. There’s a bug in the driver installer (not the driver) that causes a crash when it finishes the install. Thus, the driver itself is properly installed and working, as this GeForce snippet clearly shows:

Latest GeForce 442.59 May Cause BSOD.driver-ok

This snippet from GeForce Experience shows the latest driver version — 442.59 — is properly installed and working. Also shows yesterday’s date.

If Latest GeForce 442.59 May Cause BSOD, So What?

Yeah, it’s kind of disturbing — upsetting, even — to see your PC go down in flames with a BSOD. But as BSOD’s go, this one’s fairly benign. It would’ve bothered me a lot more if I hadn’t seen a run of these same BSODs in 2018 and 2019, right at the end of the GeForce driver install. Thus, I post this blog as a public service to warn others who may be keeping their GeForce drivers up-to-date. Before you do the install, close all open applications and save your work. If you’re seriously concerned, make an image backup just before running the driver install. But since the net result is a new and working driver, I’m inclined simply to say “Here they go again.” And of course, to let my readers know that they too may fall prey to this gotcha.

OTOH, you could decide to skip this update and wait and see if the next one fails to provoke a BSOD. I’m happy to keep plugging away at this stuff, and will update this blog when the next driver comes out. If it throws another BSOD I’ll let you know. If it doesn’t, ditto. Stay tuned!

[Note added 3/19/2020, afternoon] I just installed version 442.74 on my production PC. It got all the way through the install without a glitch, and asked me if I wanted to reboot. I was otherwise engaged so I did not. Just rebooted a minute or two ago, and everything concluded successfully. One can hope it’s because the installer issue — whatever it may have been — is fixed, or no longer an issue. Done!

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} Why Is Win7 Marketshare 25%?

It’s been about six weeks now since Windows 7 hit end-of-life (EOL). Yet NetMarketShare still shows it with over 25% on active desktops. Statcounter shows it at over 30%. Why is Win7 Marketshare ~25% or higher? Who’s running the old OS? I have my suspicions, and would like to share them.

Win7 Marketshare 25%.nms-graph

Despite 6 weeks since EOL, around a quarter of all Windows OS users under NetMarketShare’s purview at still running Windows 7. Who and why are the questions I want answered.
[Click image for full-sized view.]

Just for the record, the US Government’s tracking site — analytics.usa.gov — shows a lower share of 15.4%. (NetMarketShare’s exact number is 25.2%, and Statcounter’s is 30.57%.) This already suggests that some continuing Windows 7 use occurs on PCs that don’t access US Government websites. In turn, this tells me that it’s likely that 40% of continuing Windows 7 users are outside the USA, perhaps even outside North America.

If Win7 Marketshare 25%, Who’s Using It and Why?

No matter what the real number is, I believe it may be somewhat bigger than any of the numbers already presented. A certain number of Windows 7 systems are situated in kiosks and in embedded situations. These are unlikely to access the Internet. That means they wouldn’t show up in any of the monitoring sites already cited. Thus, it’s important to understand that the numbers are probably at least 1-2% low. In fact, they may be as much as 5% low, depending on how many “quiet” Windows 7 PCs are out there.

User Classes Include Individuals, SMBs and Governments

As far as visible numbers go, my guess is that they’re split pretty evenly between SMB users and private individuals. My gut feeling is that enterprises have mostly (90% or better) migrated already. A a significant number of government (local, state, and federal/country) agencies or departments are paying for extended security updates, too. Essentially, they’re buying time while they get onto the migration path. News stories suggest the US Government is much less involved in this program than they were during the XP to Windows 7 transition. Then, the US DoD bought as many as 2 million seats worth of such support. That said, I’ve seen news that report the German Government is spending ~800K Euros for 33,000 seats’ worth of Windows 7 extended support. Worldwide, it’s likely that the number of paid seats (which MS does not publicly disclose) is in the 1-2 million range.

For private individuals, numerous factors explain die-hard Windows 7 use. These include laziness, inertia, and unwillingness or inability to spend on upgrades. Also, there could be a perceived lack of need to upgrade. (This might reflect an imperfect understanding of growing levels of security threats, or “if it ain’t broke, don’t fix it.” at work.) SMBs share all these reasons, too. They may also be bound by continued use of legacy applications (especially custom- or in-house-built code). These often won’t or can’t be upgraded to Windows 10 affordably or easily.

How Long Will Win7 Usage Stay High?

I am surprised that this number remains so large. I wonder how long it will take for that number to erode further. I’m especially keen to see when it might go below the 10% range. This generally indicates a mostly moribund Windows OS (look at Windows 8.1’s relatively tiny 3.48% figure). It should be an interesting phenomenon to watch. Thus, I’ll report back in on this from time to time (probably at 3-6 month intervals).

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin

{WED} DISM /Resetbase Bites Back

I’m a profound fan of the DISM (Deployment Image Servicing and Management) command. But I found myself surprised by the behavior of the /resetbase parameter today. For the record, the complete command syntax is DISM /online /cleanup-image /startcomponentcleanup /resetbase. Silly me: I understood that /resetbase would not allow changes to the base established. But I thought the /startcomponentcleanup would run first, and then the base would be reset. Wrong! Today, I tried it on my Surface Pro 3, and DISM /resetbase bites back: the two reclaimable packages I thought would be cleaned up are now frozen into my runtime image. Sigh. Here’s some illustrative PowerShell output, made after I’d already used the /resetbase option:
DISM /Resetbase Bites Back.ps-sequence

Notice that even though I ran a /startcomponentcleanup command between a pair of /analyzecomponentstore commands, the 2 reclaimable packages cheerfully persist. Sigh.
[Click image for full-sized view.]

Normally, running the dism /online /cleanup-image /startcomponentcleanup command would result in the second /analyzecomponentstore output reciting zero reclaimable packages, and no recommendation for component store cleanup. But I have no one but myself to blame for this, because I ran the /resetbase myself, not knowing it would freeze first and then fail to clean up at all. That’s why I like playing with test machines: not much real harm results even when things don’t work. Or when they don’t work the way I expect them to…

If DISM /Resetbase Bites Back, What to Do?

Not much, actually. I can either restore my most recent backup and do things right, or I can wait for 2004 and start afresh after that feature upgrade. Doing things right means: run dism /online /cleanup-image /startcomponentcleanup on the restored OS, then run the /resetbase version of that command to freeze the cleaned-up component store. I’m not sure it’s worth the effort, what with 2004 due out in the next month or two. OTOH, the Surface Pro 3 is a test machine and I won’t lose anything except time if I restore the latest Macrium backup, apply pending updates, and try again (the right way).

But now I know something important: if you want to use the /resetbase option in DISM, you should run the DISM /online /cleanup-image /startcomponentcleanup command first. That will clean up anything reclaimable. Then, when the number of reclaimable packages is zero, use the /resetbase option. Now, I know. Hopefully, you too can learn from my mistake. And so it goes, here in Windows-World!

facebookgoogle_pluslinkedin
facebookgoogle_pluslinkedin