The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,830 other subscribers

Archive for the ‘.NET’ Category

Code52/carnac: A utility to give some insight into how you use your keyboard (on Windows systems)

Posted by jpluimers on 2025/02/18

I unconsciously wanted a tool like this for a long time, and was glad I finally searched for it:

A keyboard logging and presentation utility for presentations, screencasts, and to help you become a better keyboard user.

[Wayback/Archive] Code52/carnac: A utility to give some insight into how you use your keyboard

The first time I saw something similar was in the Delphi days where it was part of a plugin for CodeRush in Delphi (think Delphi 5-6 era), the famous developer productivity tool by Mark Miller that later got rewritten for Visual Studio and became part of DevExpress.

So I searched for [Wayback/Archive] windows show keystrokes – Google Search which found [Wayback/Archive] How to show keystrokes on Windows 10 which in turn mentioned a fork of Carnac.

As it turns out Read the rest of this entry »

Posted in .NET, Delphi, Development, Hardware, Keyboards and Keyboard Shortcuts, KVM keyboard/video/mouse, Power User, Software Development, Windows, Windows Development | Leave a Comment »

Since covariance and especially contravariance often give me headaches (especially with Action and Func), some links

Posted by jpluimers on 2025/02/12

For my reading list (will likely be extended in the future) as covariance and especially contravariance often give me headaches (even after all these years of C#):

Read the rest of this entry »

Posted in .NET, C#, Development, Software Development | Leave a Comment »

If you need to learn ASP.NET core or looking for specific examples, then try GitHub dodyg/practical-aspnetcore repository

Posted by jpluimers on 2025/02/05

[Wayback/Archive] dodyg/practical-aspnetcore: Practical samples of ASP.NET Core 2.1, 2.2, 3.1, 5.0, 6.0 and 7.0 projects you can use. Readme contains explanations on all projects.

By the time you read this, all examples should have been rewritten to use minimal API footprint so it easier to get just the essentials from each example.

Via [Wayback/Archive] dodyg on Twitter: “I just realized this repo has about around 1500 samples in total because for each version of ASP.NET Core the samples get modified in some ways beyond project increment, e.g for .NET 6, all samples gets rewritten to use minimal API.”

–jeroen

Posted in .NET, ASP.NET, ASP.NET core, C#, Development, Software Development, Web Development | Leave a Comment »

Deploy .NET Framework 3.5 by using Deployment Image Servicing and Management (DISM) instead of Chocolatey and some notes on PowerShell colours

Posted by jpluimers on 2025/01/07

Since every now and then, like testing software developed with older tools, you need to run older software.

This always works: [Wayback /Archive] Deploy .NET Framework 3.5 by using Deployment Image Servicing and Management (DISM) | Microsoft Learn

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All

Use /All to enable all parent features of the specified feature.

(The /All is needed because software requiring .NET Framework 3.5 also require the parent features).

Notes:

  • Tested on Windows 10 and Windows 11 in 2022.
  • It can take a really long time (more than just a few minutes!) even on fast connections.
  • Installing through Chocolatey with `choco install dotnet3.5 fails on Windows 11 (have not tried on Windows 10) with the classical red on black PowerShell default error theme*:

    ERROR: The term 'wmic' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    The install of DotNet3.5 was NOT successful.
    Error while running 'C:\ProgramData\chocolatey\lib\DotNet3.5\Tools\ChocolateyInstall.ps1'.

Read the rest of this entry »

Posted in .NET, .NET 3.0, .NET 3.5, C#, Chocolatey, Development, Power User, PowerShell, Software Development, Windows, Windows 10, Windows 11 | Leave a Comment »

Old programming books had cool little “puns” in their references, modern lack them in their indices. On the why, and history of them.

Posted by jpluimers on 2025/01/01

I wrote a two earlier blog posts around puns in programming book indices before:

  1. the 1992 Turbo Pascal 7.0 Language Guide having both entry in the manual about Recursion (“recursive loop, see recursive loop”) which of course is similar to “infinite loop” and entries for “infinite loop See loop, infinite” and “loop, infinite See infinite loop”.
  2. infinite loop in “LaTeX: A Document Preparation System” by Leslie Lamport, printed in 1994.

In the last one, I promised to list more occurrences which I now finally had time for to do.

But let me first elaborate more on the observation that modern computer books (like for instance on C# and Delphi beyond version 1) lack these kinds of index pun.

On the Delphi side, the index entry joke for recursion got removed no later than Delphi 3 (I am still looking for a Delphi 2 version of the Object Pascal Language Guide, see further below) even before the book being fully redone electronically and the index pages generation being automated in

I think I even understand why that is: the process of creating of indices. By the start of this century, more and more indices were automatically being generated and for the last 2 decades or so, all of them are. Back in the days however, indices were mostly done by hand. Nowadays, with everything automated, it is actually pretty tricky in most environments to add such an “infinite loop” index entry like in the Turbo Pascal book, as it would require two things at once:

Read the rest of this entry »

Posted in .NET, C, C#, C++, Conference Topics, Conferences, Delphi, Delphi 1, Delphi 2, Development, EKON, Event, History, LaTeX, LifeHacker, LISP, Mathematics, Pascal, Perl, PL/I (a.k.a. PL/1), Power User, science, Software Development, Turbo Pascal, Typesetting | Tagged: , | 4 Comments »

HInvoke and avoiding PInvoke | drakonia’s blog

Posted by jpluimers on 2024/12/26

On my research list [Wayback/Archive] HInvoke and avoiding PInvoke | drakonia’s blog.

A very minimalistic approach of calling .net runtime functions or accessing properties using only hashes as identifiers. It does not leave any strings or import references since we dynamically resolve the required member from the mscorlib assembly on runtime.

Read the rest of this entry »

Posted in .NET, C#, Development, Encryption, Hashing, Power User, Red team, Security, Software Development | Tagged: , , , , , , , | Leave a Comment »

Link archive: Windows PSBits/PasswordStealing/NPPSpy at master · gtworek/PSBits

Posted by jpluimers on 2024/12/12

Simple (but fully working) code for NPLogonNotify(). The function obtains logon data, including cleartext password.

[Wayback/Archive] PSBits/PasswordStealing/NPPSpy at master · gtworek/PSBits has been used in the wild since about 2022 (the code is from 2020).

The code is a ~100 line C file resulting in a DLL exporting the NPGetCaps() and NPLogonNotify() functions.

Background/related:

Read the rest of this entry »

Posted in .NET, Blue team, C, CommandLine, Development, Power User, PowerShell, PowerShell, Red team, Scripting, Security, Software Development, Windows Development | Tagged: | 1 Comment »

Un4seen.Bass Namespace – BASS.NET API for the Un4seen BASS Audio Library

Posted by jpluimers on 2024/11/19

A while ago, within a week time, I got reminded of a project I did some 15 years ago involving low-latency audio using the .NET platform on Windows XP Embedded.

For that I used the BASS.NET wrapper classes and P/Invoke methods around the Un4seen BASS Audio Library.

Back in those days there was not much documentation about this, but now there is more.

Some starting points are:

Via:

Related:

--jeroen

Posted in .NET, Audio, Conference Topics, Conferences, Development, Event, LifeHacker, Media, Power User, Software Development, Windows Development | Leave a Comment »

Some winget packages that will get you x86 or x64 versions of vcredist140

Posted by jpluimers on 2024/10/15

A while ago I downloaded some internal tooling that required vcredist140.dll (and related DLLs).

From the name you cannot see if that is a 32-bit (x86) or 64-bit (x64) dependency so you often have to trial and error to figure out which one you need.

I adopted some winget package install command-lines with package IDs current at the time of writing this blog post; similar should be available at the time of publication:

Read the rest of this entry »

Posted in .NET, C++, Development, Software Development, Visual Studio 2015, Visual Studio 2017, Visual Studio 2019, Visual Studio 2022, Visual Studio and tools, Visual Studio C++ | Leave a Comment »

Downloading a file from the Windows console without first installing a command-line tool

Posted by jpluimers on 2024/10/09

Note that the below methods likely will cause security warnings if a Windows machine has been properly configured, but in most cases at least one of them works.

  1. using cURL (Widows 10 and up)
    curl --url https://speed.hetzner.de/100MB.bin --output %TEMP%\100MB.bin
  2. using [Wayback/Archive] certutil | Microsoft Docs (at least Windows 7 and up; needs UAC elevation)
    certutil.exe -urlcache -split -f https://speed.hetzner.de/100MB.bin %TEMP%\100MB.bin
  3. using PowerShell (at least Windows Vista and up)
    powershell.exe -Command (New-Object System.Net.WebClient).DownloadFile('https://speed.hetzner.de/100MB.bin','%TEMP%\100MB.bin')

I think it works for all versions of curl, certutil, and PowerShell though I did not have anything older than up-to-date Windows 7 (having PowerShell version 3) and recent to test on.

Read the rest of this entry »

Posted in *nix, *nix-tools, .NET, Batch-Files, CommandLine, cURL, Development, Power User, PowerShell, PowerShell, Scripting, Software Development, Windows, Windows 10, Windows 11, Windows 7, Windows 8, Windows 8.1, Windows Development, Windows Vista | Leave a Comment »