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,839 other subscribers

Archive for the ‘Development’ Category

Get the full exe path name of running processes.

Posted by jpluimers on 2016/02/03

Every once in a while, I need to see which EXE paths.

In [Wayback/Archive] this particular case, I wanted to see which [Wayback/ArchiveSpring.Tests unit tests instances of [Wayback/ArchiveSpring4D were running.

This case I needed to see which DevEnv were running (because somehow I got my .csproj bindings wrong).

Since [Wayback/Archivetasklist nor [Wayback/Archivepslist would cut it, I wrote two small batch files:

[Wayback/Archive] :

[Wayback/Archive] :

@echo off
:: http://superuser.com/questions/768984/show-exe-path-of-running-processes-on-the-command-line-in-windows
  if [%1] == [] goto :help
  PowerShell Get-Process %* ^| Format-List Path
goto :eof
:help
  echo Syntax:
  echo   %0 ProcessName
  echo Shows the full EXE paths of any running process with the ProcessName name.
  echo Example:
  echo   %0 DevEnv
  echo Shows the paths of running Visual Studio processes

PowerShell to the rescue here: Both batch files use the PowerShell [Wayback/ArchiveGet-Process cmdlet.

First I used [Wayback/ArchiveGet-Member to see what Get-Process could return:

PowerShell Get-Process ^| Get-Member

Then I [Wayback/Archivefiltered the Path from Get-Process to figure out which Spring.Tests processes were running:

PowerShell Get-Process Spring.Tests ^| Format-List Path

resulting in:

Path : C:\Users\Developer\Versioned\Spring4D\Tests\Bin\DelphiXE\Spring.Tests.exe

The second batch file escapes the pipe (|) by using a carret (^), so it is passed from the command-line to PowerShell.

–jeroen

Posted in CommandLine, Development, PowerShell, Software Development | 2 Comments »

Windows: removing file and directory reparse points (symbolic links, directory links, junctions, hard links)

Posted by jpluimers on 2016/02/02

The interwebs is full of posts telling about how to create file and directory junctions**.

But there is little information about removing them and even less being correct: some suggest to del a directory junction (which just deletes everything in it but the junction).

Finally there is little information about listing all junctions, so lets start with that:

Deleting a link depends on the kind of link, not the kind of source.

Since symlink and hardlinks are for files, and directory symlink and junctions are for directories, this is how:

  • Delete a file symlink or hardlink by using DEL.
  • Delete a directory symlink or junction using RMDIR.

SysInternals – I wrote about them before – has a great junction tool. It can be used to create, delete and (optionally recursively) list reparse points. All usages allow for file and directory junctions.

More about reparse points

This is about the **: actually they are reparse points; for files they are symlinks, for directories mostly junctions, but sometimes symlinks.

And actually the reason I wrote this blog post. As you also have hardlinks. Some combinations of files and directories with these kinds of links fail.

Lets first go to see what kind of links there are on a fresh Windows system.

This is the only directory symlink: C:\Users\All Users and junction will show it like this:

.\\?\C:\\Users\All Users: SYMBOLIC LINK
   Print Name     : C:\ProgramData
   Substitute Name: \??\C:\ProgramData

It is unlike this directory junction C:\Users\Default User which junction will show as this:

\\?\C:\\Users\Default User: JUNCTION
   Print Name     : C:\Users\Default
   Substitute Name: C:\Users\Default

Together with C:\Users\Default and C:\Users\desktop.ini they are hidden, so you need the /AH flag to show them using DIR (as a gist, since WordPress still screws up less than and greater than):


Directory of C:\Users
08/22/2013 04:45 PM <SYMLINKD> All Users [C:\ProgramData]
09/30/2013 06:27 AM <DIR> Default
08/22/2013 04:45 PM <JUNCTION> Default User [C:\Users\Default]
08/22/2013 05:34 PM 174 desktop.ini

When you look at the examples below, it is odd to see that C:\Users\All Users is a SYMLINK and not a SYMLINKD as it points to a directory.

And yes, there are not so and very subtle differences between SYMLINKD and JUNCTION.

Lets show some examples.

The examples are hopefully more complete than the complete guide.

Since symlinks are client side created and not verified until use, you can actually use mklink to create both file and directory symbolic links for a file. DIR shows them as SYMLINK or SYMLINKD.

A SYMLINK to a file actually works, but a SYMLINKD or JUNCTION to a file gives you an Access Denied error. Hardlinks get the attributes of the source (so delete hidden hardlinks using the DEL /AH option).

Example batch file:

Example output:

When you try this for directories, you are in for a few small surprises.

A SYMLINK to a directory neither works as file nor as directory. A SYMLINKD or JUNCTION to a directory works. Hardlinks don’t work for directories with reason: limit the risk of cycles.

Example batch file:

Example output:

Conclusion

  • symlink and hardlink can be used as files, but not as directories.
  • files referenced through symlinkd and junction behave as empty directories.
  • symlinkd and junction can be used as directories, but not as files.
  • directories referenced as symlink are not usable.
  • directories cannot function as hardlink source.
  • hardlinks to files inherited their attributes.

–jeroen

Posted in Batch-Files, Development, Scripting, Software Development | 2 Comments »

Bash Coding Style · drwetter/testssl.sh Wiki

Posted by jpluimers on 2016/01/31

Awesome read on bash Coding Style · drwetter/testssl.sh Wiki

Posted in bash, Development, Scripting, Software Development | Leave a Comment »

Some more tf.exe related batch files for managing workspaces – via: Find an installed tf.exe, then run it with the command-line parameters specified. « The Wiert Corner

Posted by jpluimers on 2016/01/28

As part of some TFS related posts, I wrote about Find an installed tf.exe, then run it with the command-line parameters specified.

Below are some more batch files related to this. In each batch file, you can replace tf with call "%~dp0tf.bat" so the above batch file is executed first.

Read the rest of this entry »

Posted in Batch-Files, Development, Scripting, Source Code Management, TFS (Team Foundation System) | Leave a Comment »

winforms – Where is the Tab Order Assignment dialog in Visual Studio 2012+? – via: Stack Overflow

Posted by jpluimers on 2016/01/27

Duh: same for VS2013

It is still available, you just need to add it back to the View menu. Tools + Customize, Commands tab, Menu bar = View. Select the menu item in Controls where you want to insert it, say the bottom one. Then Add Command, Category = View, Commands = Tab Order.

Source: winforms – Where is the Tab Order Assignment dialog in Visual Studio 2012? – Stack Overflow

–jeroen

Posted in .NET, .NET 4.0, .NET 4.5, C#, C# 3.0, C# 4.0, C# 5.0, Development, Software Development, Visual Studio 2012, Visual Studio 2013, Visual Studio 2014, Visual Studio 2015, Visual Studio and tools | Leave a Comment »

Building and running upc_keys.c on Mac OS X

Posted by jpluimers on 2016/01/27

Even after the SpeedTouch password algorithms were disclosed 2008, ISPs keep using weak algorithms to generate their default WPA/WPA2 passwords in their routers:

A short while ago, blasty published code to generate the WPA2 passwords for UPC routers. Even though Ziggo now owns UPC, a lot of  this UPC equipment is still in use. I guess it won’t be for long that similar code for Ziggo routers will be published too.

The code at https://haxx.in/upc_keys.c is easy to download, build and run on a Mac OS X machine even when you don’t have Xcode installed (use the “xcode-select –install” trick):

wget https://haxx.in/upc_keys.c
gcc -O2 -o upc_keys upc_keys.c -lcrypto
./upc_keys UPC0053284 5
./upc_keys UPC0053284 24

–jeroen

Posted in *nix, *nix-tools, Apple, C, Development, gcc, Mac, Mac OS X / OS X / MacOS, MacBook, MacBook Retina, MacBook-Air, MacBook-Pro, MacMini, OS X 10.10 Yosemite, Power User, Software Development | Leave a Comment »

c# – How can I create a temp file with a specific extension with .net? – Stack Overflow

Posted by jpluimers on 2016/01/27

You’d think this is a simple question.

Be amazed by the many ways leading into to creating a temporary file with a specific extension.

This list doesn’t even cover all of them:

  • Create a file name based on GetTempPath, a Guid and an extension.
  • Use the TempFileCollection from the Compiler in System.CodeDom.
  • Get a random file name, then change the extension. Loop until it is unique.
  • Use a timestamp to generate unique file names.

All via: c# – How can I create a temp file with a specific extension with .net? – Stack Overflow.

Which one would you choose?

–jeroen

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, C# 6 (Roslyn), Development, RemObjects C#, Software Development | Leave a Comment »

.NET Regex Tester – Regex Storm

Posted by jpluimers on 2016/01/26

Greate stuff:

Online .NET regular expression tester with real-time highlighting and detailed results output.

Allowed me to quickly verify the pattern PWWWC\d\dFE\d\d_\d\d\d\d-\d\d-\d\d\.zip matches only one of these filenames:

PWWWC07RI01_2016-01-10.zip
PWWWC08FE03_2016-01-04.zip
PAPPC00BT01_2016-01-04.zip

–jeroen

Source: .NET Regex Tester – Regex Storm

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

Reverse engineering using other tools.

Posted by jpluimers on 2016/01/26

Interesting read: [Interesting post] Part 3 – Reverse engineering using other tools. ….

It’s about doing the reverse of obfuscating. Not only convenient to look how certain software was constructed, but also about learning what could me malicious code.

–jeroen

Posted in Development, Software Development | Leave a Comment »

10 Articles Every Programmer Must Read – I am programmer

Posted by jpluimers on 2016/01/21

10 Articles Every Programmer Must Read – I am programmer.

Posted in Development, Encoding, Software Development | 1 Comment »