Advanced IP Scanner by Famatech

Sometimes on a windows client, you have a need to scan for ip addresses between a predetermined range.

Eg: 192.168.1.1 – 192.168.1.100

There are various legitimate reasons for doing so:

  • Perhaps you have one dhcp server that automatically assigns ip addresses, making it hard for you to remember ip addresses of systems on the network as they keep changing
  • You want an inventory of your systems so you can generate a quick report

I was pleasantly surprised by Famatech‘s Advance IP Scanner tool.

Famatech's Advanced IP Scanner
Famatech’s Advanced IP Scanner

I liked the fact that you could simply type in an ip address range and it would quickly generate a report with the system’s assigned computer names.

A tool like this really comes in handy when there are unknown ip addresses or clients scattered all over your network that you’d like to keep track of in real-time.

Sarah Dutkiewicz and Eric Wise speak at Cleveland WPF User Group

I parked my car and started walking towards the main entrance of DeVry University.

I started a conversation with someone who looked like a student walking to the university.

“Are you here for the Cleveland WPF User Group”, I said.

I received a nod of the head, and a casual request to peek at a water bottle that read “Microsoft MVP”.

I smiled, and remembered.. Sarah is the MVP, and by extension tonight’s speaker!

That’s how I met Sarah, the presenter at Cleveland WPF User Group for the very first time. She was kind enough to permit me to blog about the recent developments at Microsoft that she covered.

Before the talk started, Eric Wise introduced Software Craftsmanship Guild, a new company that he recently launched in the North-East Ohio region. It aims to provide new job applicants the requisite skills to be adept at their work and at the same time allow enterprises to participate in his hiring network.

Check out a video of him introducing the new startup here:

Sam Nasr, friend, and organizer of the Cleveland WPF User Group and Cleveland .Net SIG, announced that we will be meeting at DeVry University from now on, and then introduced Sarah:

Next, Sarah demo’d a cool new website from Microsoft that allows the end user that has a touch enabled device to make music on the fly, all of this via Internet Explorer only:

Rest of the event I post below for those who weren’t able to make it and wish to learn about the newer technologies. As time permits, I will be editing this post to include hyperlinks, links to presentations etc. so that me or anyone at the event or anyone that missed the event can quickly reference the information:

After the talk we went to Mavis Winkles.. had a great chat with everyone!

Drinks at Mavis Winkles
Drinks at Mavis Winkles

Dependency Walker

Note: This post will be specific to Windows 7 and 32 bit applications written prior to Windows 7; but the idea pertains to pretty much any legacy application.

Sometimes legacy code is important and has to be run on modern operating systems. The reasons for this can vary.

Newer operating systems like Windows7 provide compatibility modes in them to support older applications, but sometimes you get error messages when you run them.

I like to understand why as much as the how to get legacy applications to run on a modern operating system so that I can prove to myself that the application can execute ok.

So the scenario is that you wrote an awesome program in the 1990’s and wish to run it in 2012. However, try all you may it does not run at all 😦

A tool like Dependency Walker (http://www.dependencywalker.com) can open any of your legacy executables and provide a dependency tree of all dynamically loaded libraries the application wishes to use.

Sample screenshot

Sometimes in Dependency Walker’s error log you will find some dll’s that are not found. For example:

 

Using a tool such as this, you can provide real time feedback to developers so that they can make changes that will enable their applications to run on modern operating systems.

In my particular case, the executable I tried to open with dependency walker reported the above messages; however when I ran the application in compatibility mode Windows 95, I was able to execute the program just fine.

 

Uninstall service without reboot in Windows

In my attempt to write TCP/IP application on Windows platform, I realized sometimes it is not possible for your service to uninstall without a reboot of the machine. I imagine this happens most prominently on a multi-user machine, but that is just pure speculation. I have heard that the below is not really needed on a single user machine and instead the services.msc snap in when refreshed can make sure the service is completely removed.

Either way, the method which which you can prevent having to reboot is a two step process:

Determine the PID of your service

sc queryex “NAME_OF_SERVICE”

Here, NAME_OF_SERVICE is the exact name of your service as displayed in the services.msc snap-in on any windows system.

The above command run on the console will output something like:

SERVICE_NAME: "NAME_OF_SERVICE"
        TYPE               : 110  WIN32_OWN_PROCESS  (interactive)
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x2
        WAIT_HINT          : 0x3e8
        PID                : 6116
        FLAGS              :

In the above output, you want to remember the PID value and proceed to the next step

 

Use taskkill to force kill your process

taskkill /pid PID /f

After which you should see something like:

SUCCESS: The process with PID 6116 has been terminated.

After this services.msc can be refreshed to reflect a known good state of your service.

Reflection:

I felt this was pretty similar to unix based systems:

ps -ef | grep “Process”

kill -9 PID

Enough to elucidate in this little wordpress post. Hope its of use to someone.