Category Archives: Cool Tools

PowerToys File Locksmith Works Well

Starting with version v0.64.0, released on November 2, the PowerToys collection added File Locksmith to its mix.The tool’s own built-in description is sparse. It reads: File Locksmith is “…[a] Windows shell extension to find out which processes are using the selected files and directories.” Doesn’t sound like much but can be handy. Indeed, I learned that PowerToys File Locksmith works well this weekend. Let me explain…

Why Say: PowerToys File Locksmith Works Well?

As I tried to work through an update process for a desktop tool, I got an error message showing three instances of svchost.exe were impeding installation. Remember: File Locksmith is a “shell extension.” In this case, that means you can right click “stuck” files in File Explorer and then choose the “Who’s using this file?” menu option that appears.

This brings File Locksmith into the picture, wherefrom you can choose an “End Task” button for associated files that show up in the listing. Furthermore, you can see detail about each running process, so you can even match up process IDs inside Task Manager to make sure you “end task” only when and where you should, and leave other stuff alone.

PowerToys File Locksmith Works Well.fl-output

The offending items were various DLLs. They run within svchost processes so multiple programs can share access to them.
[Click image for full-sized view.]

This made my job pretty easy. All I had to do was end the offending tasks so the installation could complete. It did so pretty much immeditately after I told it to try again. And it ran to successful conclusion.

Warning: Because ending tasks for shared DLLS can leave certain important facilities inaccessible after such a move, I also restarted Windows after the update was done. You know: just to be on the safe side…

But gosh, File Locksmith made this sometimes vexing and onerous task easy and straightforward. I have to laugh about this too, though. Here’s why: earlier versions of PowerToys itself were prone to experiencing install delays owing to running items. These included dll host processes that required manual closing in Task Manager. Thus, it’s glaringly obvious how the developers figured out such a tool could be helpful — at least, IMHO.

But it’s here, it works, and has already proved useful in helping me update a utility included in my Startup items, and generally running in the Windows background. If it worked for me, it should do likewise for you. Enjoy!

Facebooklinkedin
Facebooklinkedin

Winerror versus Err: Enough, or Too Much?

Here’s an interesting dilemma. In the past, I’ve advocated use of the Windows Error Lookup Tool, currently Err_6.4.5.exe The other day, I had cause to rue my recommendation. I actually found a different, more focused tool named Winerror.exe. It’s part of the Windows Assessment and Deployment Kit, aka Windows ADK. But then, you might also need to grab the older Windows 10 version to get the tool I’m about to discuss. It seems to be missing in the Windows 11 version.

Winerror versus Err: Focused and General

You can see the issue in the lead-in graphic for this article. Notice that winerror provides two different expansions, one of which mentions normalization. Err_6.4.5, OTOH, provides 6. These come from a variety of error code source files: bugcodes.h, netmon.h, winerror.h, and ntstatus.h.

In simpler terms, winerror looks only at winerror.h; err… looks at a bunch of error code source files, including winerror.h. My point is that winerror may be worth consulting when you’re troubleshooting Windows 10 or 11. That goes double when the error reporting tool (err_6.4.5.exe) produces more output than you know how — or really want — to use.

Wm Blake Still Has a Point

The end half of the title for this story comes from William Blake’s Proverbs of Heaven and Hell. It makes the excellent point that you really don’t know you have enough until you have more than you need. That’s why I recommend using the older, but less general, Winerror.exe when you find that the latest error reporting tool (err_6.4.5.exe) has more to say than you really need to know.

‘Nuff said!

Facebooklinkedin
Facebooklinkedin

Using Winget For 4 Ways To Update

I’ve been researching an upcoming ComputerWorld story about the terrific and powerful PowerShell based Windows packager: Winget. It’s a peach! I mostly use it for keeping applications and supporting elements current. Lately,  I’m  using Winget for 4 ways to update my apps. Let me explain…

How-to: Using Winget for 4 Ways to Update

Way 1: Check Pending /Available Upgrades

By itself, the command winget upgrade simply shows what’s ready to upgrade. It doesn’t actually do any upgrades. Thus, it offers a quick easy way to see what upgrades are available. That’s why it appears as the lead-in graphic for this story.

Ways 2 & 3: Perform Blanket Upgrades

In fact, two different command strings provide varying degrees of upgrade capability

  1. winget upgrade –all
  2. winget upgrade –all –include-unknown

By default winget only upgrades to a new version when it recognizes the current version. Then, if the current installed version is lower-numbered than the pending one, the upgrade goes ahead. Some-times, for whatever reason, winget can’t find the current running version into. In such cases, the upgrade –all variant skips them. Thankfully, adding –include-unknown to the string tells winget to upgrade those anyway. Consequently, I use that more inclusive variant because there’s less follow-up needed.

To illustrate, the next screencap shows winget upgrade –all –include-unknown output on the PC that produced the lead-in snap. Notice please: 5 items found, 5 items upgraded. Good-oh!

The –all –include-unknown variant of winget upgrade covers the most possibilities. On this PC, all 5 candidates upgrade.
[Click image for full-sized view.]

Way 4: Targeted Winget Upgrades

Examined closely, both preceding screencaps shows an ID column. Indeed, that information provides a “package name” for its associated application. Thus, you can always upgrade a single package at time using this syntax:

winget upgrade <package-name>

For example, names shown in the screencaps include Mozilla.Firefox, TeamViewer.Teamviewer, AntibodySoftware.Wiztree, Google.Chrome and Microsoft.WindowsSDK. That follows a mostly predictable structure: builder-name.package-name. For speed, I like to use it when winget presents only a single option, or when a winget blanket command fails.  I’m learning that happens sometimes, for various odd reasons.

There are many ways to work with winget I haven’t yet mentioned. These could appear in future posts here. Certainly, they’ll definitely be covered in my upcoming ComputerWorld piece. Right now, that’s scheduled to appear online before month’s end. Hopefully, you’ll get a chance to catch that during the busy holiday season.

 

Facebooklinkedin
Facebooklinkedin

Winget Updates PowerShell 7.2.7

Here’s something new in my personal experience. I ran Winget on one of my Dev Channel test PCs this morning. The latest version of PowerShell came up as an upgrade option. So I exercised it, and indeed the PowerShell version incremented from 7.2.6 to 7.2.7. Hence my claim that now, Winget updates PowerShell 7.2.7. You can see the process underway in the lead-in graphic for this story.

What Happens When Winget Updates PowerShell 7.2.7?

Things get a little weird along the way. Notice that after Winget starts the package install for PowerShell, it shows a “Cancelled” notification at the lower left corner of the Terminal session window. At the same time, the PowerShell installer (small pane at lower right) reports ongoing progress in removing the old version, then installing and configuring the new version.

When the progress bar goes all the way to the right, it simply disappears with no further communication from the installer. On a whim, I closed the open Terminal session window. When I opened a fresh one, here’s what I saw:

Winget Updates PowerShell 7.2.7.new-window

Once the progress bar completes, the installer goes silent. But if you close the open Terminal session, then open a new one, you’ll see it’s indeed been updated to 7.2.7.

I’m not sure how it’s supposed to behave because I’ve never seen winget upgrade PowerShell before. Normally, a full installer window opens with the masked PowerShell avatar (see below). Then, one steps through the typical standalone installation sequence. This time, with PowerShell running things it worked differently. A bit disconcertingly, too. But it’s installed now and works as expected. So I guess, all’s well that ends well. Cheers!

Winget Updates PowerShell 7.2.7.avatar

I guess I’ll miss the avatar going forward, but I do appreciate the convenience of upgrading inside PowerShell.

Facebooklinkedin
Facebooklinkedin

Working with WinFetch

WinFetch is a windows-focused knock-off of another well-known shell tool named NeoFetch. Each is written to show useful and informative data about systems from within a command-line shell environment. NeoFetch is built atop bash; WinFetch atop PowerShell. IMO, that makes WinFetch more suited for use with Powershell. I’ve been working with WinFetch a lot lately, learning how to use it to help me see what I’m doing with Windows Terminal and PowerShell customizations. Indeed, it’s pretty helpful. But I’ve also been learning some lessons the hard way as I go. Let me explain…

Why Working with WinFetch Takes Some Effort

The documentation on WinFetch is kind of sparse. In fact, I’m starting to think I should spend my time reading the NeoFetch stuff, because it may shed more light on the inner workings of WinFetch. Straight from its GitHub home, there’s precious little info available about its details and settings. Sigh.

So far, the lessons I’ve learned the hard way include:
1. You must save the config.ps1 file that governs WinFetch behavior for its changes to take effect.
2. Sometimes, a reboot is required, above and beyond a simple save. I can’t tell why, but I found myself stuck a couple of times on this hump. If you make a change, save the config file and it has no impact on the WinFetch output, try a reboot. It may do the trick.
3. Customizing the WinFetch config is totally a trial-and-error exercise. Be prepared to spend lots of time tweaking and checking, then repeating ad infinitum. Sigh again.

Customizing for Winget Package Mgr

It took me a while — including plenty of the aforementioned trial and error, but I got WinFetch to look at and report on Winget packages. Here’s the syntax, straight from the config.ps1 file that makes WinFetch work:

$CustomPkgs = @(“winget”)
function info_pkg_winget {
return ((winget list | measure-object).count)
}

What you’re doing is telling winget to list all the packages it knows about, then piping that input into the measure-object cmdlet. Using its count attribute you simply show the overall package count. Sublime!

Facebooklinkedin
Facebooklinkedin

Get-Hotfix Shows What WU Sometimes Cannot

When MS lifted the safeguard hold on  my Lenovo P16 Mobile Workstation, I upgraded it to Windows 11 22H2. Naturally, my first thought thereafter was to check on status of recent updates and fixes. That’s when I figured out that KB5018427 was included in the 22H2 version installed. Seems that Get-Hotfix shows what WU sometimes cannot — at least as far as Update History goes.

It’s all apparent in the lead-in graphic for this story. In case it’s not legible enough, right-click on that image and select “Open image in new tab” (Chrome, Firefox, Edge, etc.). That should show it at original resolution. If necessary, you can use the browser’s Zoom controls to magnify the text.

How Get-Hotfix Shows What WU Sometimes Cannot

Update history shows only user-alllied updates. It does not show updates that — like KB5018427–get rolled up into the windows image file (WIM) used to install a version upgrade. That’s what makes the PowerShell Get-Hotfix command so useful. Its image analysis tool tells it what’s there, whether the user applied it directly, or whether it’s already “in there” as is the case here.

An important clue appears in the “Installed on” date shown in the output of Get-Hotfix. Although the KB item itself is dated 10/11/2022, it didn’t get rolled into the WIM until 10/14/2022.

What Led Me Down This Trail?

I read the Windows Latest story about KB5018427. Naturally, I wanted to check on its status in the upgraded 22H2 version. When I didn’t see it in Update History, I visited the Microsoft Catalog and downloaded the 64-bit MSU file. Upon attempting its installation, it searched the updates already installed on the PC. That produced the following status message:

That made me understand the KB had been included in the WIM file I’d already installed. A search on “use PowerShell to show updates installed” led me to the Get-Hotfix command.

As the afore-cited PowerShell docs states:

The Get-Hotfix cmdlet gets hotfixes, or updates, that are installed on the local computer or specified remote computers. The updates can be installed by Windows Update, Microsoft Update, Windows Server Update Services, or manually installed.

Thus Get-Hotfix can catch patches and fixes no matter how they get included in the image it checks and reports upon. The rest, as they say (drum roll, please)… is history!

 

Facebooklinkedin
Facebooklinkedin

Windows 365 App Now Available

Too cool!  The Windows 365 app — now available in the MS Store — is out. Search on either “Windows 365” or “Windows 365 Preview” and it should come right up. The app’s Store page appears as the lead-in graphic for this story, in fact.

With Windows 365 App Now Available, What Else Is Needed?

Good question! I immediately downloaded and installed the app. Upon running same, I learned that a valid Windows 365 subscription is required so that the app can connect and interact with a Cloud PC instance. Because I lack such a subscription, here’s what I got from the cloud when I logged into my AD tenant account:

Windows 365 App Now Available.noacct

Drat! I was afraid that Preview didn’t confer temporary or evaluation access. I was right, alas…

Looking at Windows 365 Business Plans for SMBs, I see they cost from US$31 to 61 per month. Ouch! That’s costish, for something I don’t really need, but would love to play with.

Visiting the MS Evaluation Center, nowhere do I see Cloud PC among its various offerings. I guess that makes sense: it doesn’t cost MS anything more than storage space to provide ISOs for download. Hosting (extra) cloud PCs for evaluation means they bear more or less the same costs that the real thing imposes, with none of the revenue generating benefits.

Ifs and Buts for Cloud PC, Windows 365 App

Too bad! I’ve wanted to give the Cloud PC thing a try since it was first announced in 2018-2019. Right now, it seems like there’s no way to try it out without buying it. And with costs at US$372 per year and up, that means tangible costs. I’ll have to think about this, to see if I want to “pay to play.”

But those who already have Windows 365 subscriptions can simply download the app. When they log into an AD tenant with associated Cloud PC instances, the app should take it from there…

Facebooklinkedin
Facebooklinkedin

Fixing Windows 10 WinKey-X

I don’t remember anymore how I shot myself in the foot this particular time. All I know is that I somehow removed all traces of PowerShell from the WinKey+X menu on my Windows10 production PC. The lead-in graphic shows that menu from my ancient Surface Pro 3, also still running Windows 10. Recently, I’ve found myself fixing Windows 10 Winkey-X because I want it to show Windows Terminal.

After Some Fumbles, I’m Fixing Windows 10 WinKey-X

If you search on “customizing WinKey+X menu” you’ll find lots of information and advice available. Initially, I was beguiled by Sergey Tkachenko’s WinX Editor. I should’ve known better: it hasn’t been updated since 2017.

A key ingredient in modifying the WinKey+X menu, as it turns out, turns on using the latest version of Rafael Rivera’s hashlnk.exe program. Basically, it creates hash values and associated them with menu shortcuts, so the OS treats the entries in the following path correctly:

%LocalAppdata%\Microsoft\Windows\WinX

The sub-folder “Group3” is where my specific shortcut had to go. But it didn’t work without using the latest (2.0) version of hashlnk. And because WinX Editor doesn’t use that version, it doesn’t work, either.

TenForums to the Rescue

As with many other topics in the Windows world, I found my fix in the TenForums Tutorials. This particular one is called Add Custom Shortcuts to Win+X Quick Link Menu in Windows 10. I followed its guidance, step-by-step, and got an admin version of Windows Terminal installed in my WinKey+X menu without undue difficulty.

As is often the case in fixing Windows issues, it took much longer to find the right solution than it did to implement it. I think we’re talking about an hour-plus of fumbling around and failed attempts before I turned to my unusually reliable and intelligible TenForums resource. Sigh. That’s the way things go around here sometimes….

Here’s what my Winkey+X menu looks like now, with my desired entry up top.

Fixing Windows 10 Winkey+X.i7skyfixed

After going through the motions I get a Windows Terminal entry with admin privileges (reads “Term (Admin)”).

I have long been a proponent of Ten Forums and ElevenForum tutorials. This doesn’t change that stance at all. In fact, it strengthens it!

Facebooklinkedin
Facebooklinkedin

ThinkPad Universal Thunderbolt4 Dock

It must be because I asked Lenovo for gear to test Thunderbolt4 and USB4. Last week another unexpected and unnanounced device showed up at the door. This time, it was a brand-new ThinkPad Universal Thunderbolt4 Dock. From what I’ve seen so far it has a lot going for it — especially price (relatively speaking, that is).

Why Is TB4/USB4 Gear So Costly?

Before I dig into the details on the mostly excellent ThinkPad Universal Thunderbolt4 dock, I must rant a bit. I’ve got 3 TB4 docks here at the house right now. The Lenovo unit is the cheapest by US$70-plus (that’s a good thing). But all of them cost over US$300, and two of them are at or over the US$400 mark. That stings!

I’ve been looking at a lot of NVMe enclosures that support USB4 lately, too (they work with TB4 controllers, BTW). These puppies cost even more. That means US$80 – 100 more than the cost of decent-to-high quality USB3.1 NVMe enclosures. I’m talking US$30-50 versus US$130-160. That’s a big difference!

One usually pays a premium to climb onto the bleeding edge of technology. And right now, TB4/USB4 is as fast as external devices get. Given a PC that supports these interfaces, I still don’t understand why climbing aboard this latest technology wave incurs such a hefty buy-in. Sigh.

More About ThinkPad Universal Thunderbolt4 Dock

Now that I’ve set the stage for describing and exploring this device, more of what I have to say should make sense. Indeed, this Lenovo dock is a relative bargain among all the TB4 docks I’ve tested so far. That is, with an MSRP of US$322, it costs US$77 less than the Belkin Pro Thunderbolt 4 dock. It enjoys the same price differential when compared to the CalDigit TS4 dock but that device keeps selling out, and is only immediately obtained on eBay for US$500-600!

Thus, the Lenovo Device has a definite price advantage in this very narrow product niche. See this Amazon Search for a fairly good list of the whole product range right now. From what I can tell, Lenovo offers the best price currently available for these kinds of devices.

Here’s a short list of ThinkPad Universal TB4 Dock features and functions (see product page for complete specs):

  • Handles up to 4 external monitors, up to 8K total resolution (1x8K display @ 30Hz or 4x4K display @ 60 Hz via 2xfull-size DP 1.4, 1xfull-size HDMI 2.1, 1xUSB-C)
  • 2 40Gbps Thunderbolt4 ports (one for computer in, one for other uses)
  • 4xUSB-A 3.1 ports and 1xUSB-C (may be used for video, as already indicated)
  • 135W external power brick, up to 100W available for charging
  • RJ-45 GbE (Intel I225-LMvP circuitry)
  • Audio mini-jack for headphones or external audio hookup
  • Universal computer lock port for attaching locked cable
  • Dimensions 220x80x30 mm (8.66×3.15×1.18″)

The Lenovo dock even downloads and handles its own Windows drivers with reasonable aplomb and dispatch. I found it loaded up its own USB Audio driver (under Sound, video and game controllers). It also updated the local Thunderbolt controller driver to a newer version after hook-up.

Stacking Up the Hubs

My testing so far puts all 3 docks — Lenovo, CalDigit, and Belkin — into the same overall performance range for USB4 and Thunderbolt 4 devices. That said, the CalDigit device offers 18 ports including GbE and 2.5 GbE RJ-45 networking hook-ups and SD flash device slots. If you can find one and need that extra functionality, that may make it worth the extra cost. Likewise, the Belkin device also supports a full-size SD slot and dual USB-A 2.0 slots, which may or may not make a different.

By comparison, I’d give the Lenovo device a “Best Buy” rating right now. If you don’t need SD support or lots of (different) USB-A ports, it can handle what you need. I have no difficulty using it as a docking station for a Lenovo X12 hybrid laptop with external mouse, keyboard, and two or three external storage devices. It also works well with HDMI or DP to drive an external Dell U2717 monitor.

 

Facebooklinkedin
Facebooklinkedin

P360 Ultra Gets Second NVMe

A couple of days ago, I praised the interior design of the Lenovo P360 Ultra SFF PC (link). I just had to remove the GPU to access the second NVMe slot on an Asrock B500 Extreme4 motherboard last week. Let’s just say it wasn’t incredibly easy (and some expletives were involved). That really made me appreciate an install that required less than two minutes all the way around. But now that the P360 Ultra gets second NVMe, I want to report on the results.

When P360 Ultra Gets Second NVMe, Speed Abounds

What you see as the lead graphic for this story is a pair of CrystalDiskMark results. To the left, the internal C: furnished with the PC (a Samsung 1TB OEM drive: MSVL21T0HCLR). To the right, the internal D: I installed (WD Black SN850).

First, let’s look at those results. The Samsung drive enjoys an 18% edge on the sequential read (queue depth 32, single thread) and a  33% gain on random read (queue depth 1, single thread). The WD Black comes out ahead on all other readings.

That’s not surprising, given that the WD Black SN850 is a newer, more capable drive. But those results also speak to the notion that one should definitely populate open NVMe slots if speedy storage is helpful to the workloads a PC must handle.

P360 Ultra Gets Second NVMe.external

Same WD Black drive in a USB4 external NVMe enclosure: much slower.

Internal vs. External NVMe

The preceding screengrab shows CrystalDiskMark results for the same drive, but housed in an external NVMe enclosure. It happens to be a USB4 enclosure, and represents as much speed as I’ve been able to get from an external NVMe drive. It’s significantly slower across the board, but still not bad.

If I drop the same drive down to a USB 3.1 enclosure, it runs at standard UASP speeds (at or under 1000 in the top 4 cells). Interestingly the bottom four cells don’t change much for either USB4 or USB3.1. Backup speeds don’t change that much, either. That’s why I’m not convinced the USB4 enclosure is worth a $100 premium (it improves backup speeds by 30 seconds, give or take).

One More Thing…

If you’re buying an NVMe drive for an external enclosure, there’s no need to spend big on a fast, capable storage device. It won’t be able to run full out because the USB link (either 3 or 4) can’t keep up with top-end NVMe speeds. As the preceding CrystalDiskMark chart shows, you can’t come near the 6-7 GBps or so performance that top-end NVMes deliver these days.

On the other hand, if you’re going to put that device into an M.2 slot INSIDE the PC or laptop, that’s a whole ‘nother story. Then, you should buy as fast as you can stand to pay for — assuming, that is, that the PC or laptop can make full use of those capabilities.

Facebooklinkedin
Facebooklinkedin