Archive for September, 2009

8 things you should know before moving to x64 version of Windows

Tuesday, September 22nd, 2009

There are many users that already have a computer with processor that supports the  x64 architecture and some of them probably consider to move into the new world of 64-bit and install the x64 version of Windows.
if you're one of these users, you should read the following tips before doing any step:

  1. First, let's start with the good part:  The x64 version of Windows have an emulation known as "WOW64" which allows you to install, run and use almost every existing 32-bit application that you currently use in your 32-bit version of Windows.  I said the word 'almost' because there are some exceptions that will be explained in the next clauses.
  2. Device Drivers:  As opposed to applications, 32-bit drivers cannot be used under x64 version of Windows. This means that must have the appropriate 64-bit driver for every hardware product that you want to use.  For standard hardware products like simple mouse and keyboard, you don't have to worry,  because Windows x64 already packed with the right drivers.  But if you use some uncommon hardware devices, you should check if the manufacturer of these devices provide x64 drivers for these devices.
  3. There are some applications that load and use one or more drivers that are needed for their functionality.  Just for example: Process Explorer and some other tools of SysInternals load their own driver that is used to extract information from Windows Kernel.
    These kind of tools won't work under x64 system, unless the software developer  provide the software with the appropriate 64-bit driver. In the case of  SysInternals tools, there is no problem, because these tools are shipped with both 32-bit and x64 drivers, and the right driver is loaded according to the version of Windows.
    However, there are some software developers that only provide a driver for 32-bit, and thus their software won't work under x64.
  4. Starting from x64 version of Windows Vista, Microsoft added a security feature that many people don't know about:  Every driver that is loaded into Windows Kernel must be digitally signed. Signing a driver can only be done by a commercial entity and requires also to pay hundred of $ per year for the Commercial Software Publisher Certificate.
    Microsoft added this feature in order to prevent from malware/Viruses/Trojans creators from loading and running malicious code inside the Windows kernel. Unfortunately, they also blocked many legitimate small developers from porting their driver based application into 64-bit.
    One example is my own OpenedFilesView utility. This utility uses a small device driver for extracting information about the opened file handles stored in the Windows kernel. (There is no any other way to get this information)
    Due to above Kernel changes in Vista x64, I cannot port this utility into Windows x64.  I already had some users that moved  from 32-bit to x64 system and disappointed after they found out that they would not  be able to use my  OpenedFilesView utility in their new x64 system.
    In theory, I can open a real company with office, phone, and address, purchase a Commercial Software Publisher Certificate, do the entire process of signing my driver, and then sell the x64 version of OpenedFilesView for $10-$15. However, I don't think that the sells of this software will cover the costs of maintaining a company and Certificate payments.
  5. There are  some applications that inject a dll file into other programs  (Windows Hooks) in order to interact with their user interface or to grab some information from them. For example, My Volumouse utility change the mouse wheel behavior when the focus is on other applications, and thus it inject a special dll for every application that interact with the mouse wheel.
    When you run this kind of application on x64 system, it'll probably work well with other 32-bit application, but it won't be able to interact with other x64 applications, unless the software developer added a support for x64 systems.
  6. Windows Registry on x64 version of Windows is a little confusing: Some of the Registry keys are common for both 32-bit and x64 applications, while some Registry keys have 2 separated instances - one for  32-bit applications and one of 64-bit applications. The separated keys for 32-bit applications are stored under HKEY_LOCAL_MACHINE\Software\Wow6432Node and HKEY_CURRENT_USER\Software\Wow6432Node.
  7. On x64 system, every memory address,  file handle, window handle, and other kernel objects, consume 8 bytes in memory (64-bit = 8 bytes), while on 32-bit systems, only 4 bytes are used. This means doing the same work on x64 might consume much more memory than on 32-bit system, even when in many cases, the usage of 8 bytes is not really necessary.
  8. Many applications vendors still don't provide a separated 64-bit version of their application, and instruct their x64 users to use their 32-bit application. Even if the 32-bit application works perfectly on x64 system, it's still running on WOW64 emulation, and this means that the application might  be a little slower than on a real 32-bit system.
    However, if the application vendor provide a separated version for x64, running the x64 version of x64 system might give you better performances than using the 32-bit application on 32-bit system.

How to extract missing system files from the DVD of Windows 7/Vista.

Thursday, September 17th, 2009

In some circumstances, you may want to extract the original system files (.dll files, .exe files, and others) that are shipped with the DVD of Windows 7 and Windows Vista.
Whether you need these files because they are missing in your system, or whether these file were replaced by other versions that caused problems, and you want to get back the original Windows files, here's a simple method to extract these system files from Windows 7/Vista DVD:

  1. Download and install the latest version of  7-Zip File Manager.
  2. Browse into the sources folder of the Windows DVD. For example, if your DVD drive is d:, you should type in the folder path of 7-Zip utility 'd:\sources'

    Sources Folder in Windows DVD

    Sources Folder in Windows DVD

  3. Locate a file named 'install.wim' and double-click it. You can easily find it by clicking the size column header to sort the files list by size, because it's the largest file on this folder.
    Alternatively, you can simply type 'd:\sources\install.wim\' in the path text-box, and jump directly to the content of install.wim.
  4. Wait 5 - 10 seconds (or a little more) until 7-Zip utility read the content of install.wim
    extract_windows_7_files_2
  5. After 7-Zip utility opens the file, you'll get a few numbered folders. Each numeric subfolder represents a different version of Windows (Starter, Home Basic, and so on).
    In most cases, you can simply browser into any of these folders, because most of system files are identical for all versions.
    However, if you want to be more strict, and extract the files from the folder that represent your current Windows version, you can first extract and read the '1.xml' file, which contains the list of versions stored in these folders.
    To make your life easier, here's the folder versions list in the DVD of Windows 7 RC:
    1 - Windows 7 Starter
    2 - Windows 7 Home Basic
    3 - Windows 7 Home Premium
    4 - Windows 7 Professional
    5 - Windows 7 Ultimate

    This means that if you want, for example, to browse into the files list of

    Windows 7 Professional, you should double-click the '4' folder.

    install.wim in 7-zip

    install.wim in 7-zip

  6. After entering into the one of the numeric folders, you'll get a list of base system folders like 'Program Files' and Windows. You should now go to the right system folder which contains the files you need. For example, if the files that you're looking for are usually stored c:\windows\system32, you should browse into Windows\System32 subfolder

    System32 folder inside install.wim

    System32 folder inside install.wim

  7. Select the files that you want to extract, and then click the 'extract' button. 7-Zip utility will ask you to type the destination folder to copy the files. After you choose or type the desired destination folder, click the 'Ok' button, and the files you need will be extracted to the selected folder.
    extract_windows_7_files_4

Finally, if you are an expert user that want to do the same thing from command-line, here's a small example that shows you how to do it:

"C:\Program Files\7-Zip\7z.exe" e d:\sources\install.wim -oc:\temp 2\windows\system32\shell32.dll

In the above example, shell32.dll is extracted from the installation files of Windows 7 Home Basic (Folder 2) into c:\temp folder, assuming that d:\ contains the Windows 7 DVD and 7-Zip utility is installed on C:\Program Files\7-Zip.

Sorting the data saved from command-line

Tuesday, September 15th, 2009

If you constantly work with NirSoft utilities, you probably already know that most of these utilities allows you to save the data into text, csv, html, or xml file from command-line, without displaying any user interface.

However, until now there was one drawback in this feature: The data was always saved in the original order, without any sorting.
So I finally started to add the command-line sorting feature into my utilities. I already added this sorting feature to the following 7 utilities, and I'll gradually add it also to the others:  IECacheView, MozillaCacheView, CurrPorts, LiveContactsView, MyLastSearch, SearchMyFiles, and OpenedFilesView.

Here's a few points about using this sorting feature:

  • For every utility that this feature is added, the data that you save from command-line will be sorted according to the last sorting that you chose from the user interface, by clicking the column header. If from some reason you still want to save the data without any sorting, like in the previous versions, you can still do that by using /nosort option, for example:
    IECacheView.exe /shtml c:\temp\iec.html /nosort
  • If you want to sort the saved data by another column, you can use the /sort command-line option. This option can accept a number as column index (0 for the first column, 1 for the second one, and so on) or the field name as appeared in the column header.
  • For example, if you want to sort by the first column (in the current columns order):
    IECacheView.exe /shtml c:\temp\iec.html /sort 0
  • If you want to sort in descending order, you should add '~' character as prefix.  For example, to sort the third column in descending order:
    IECacheView.exe /shtml c:\temp\iec.html /sort ~2
  • You can also sort by more than one column, simply by specifying multiple /sort parameters. For example: to sort by the second column, and then by the first column in descending order:
    IECacheView.exe /shtml c:\temp\iec.html /sort 1 /sort ~0
  • If you choose the specify the sorting column by its name, you must put it in quotes if the caption contains one or more space characters. For example, to sort by Content Type in IECacheView:
    IECacheView.exe /shtml c:\temp\iec.html /sort "Content Type"
  • If you want to sort in descending order, the '~' prefix must be inside the quotes, for example:
    IECacheView.exe /shtml c:\temp\iec.html /sort "~Content Type"
  • You don't have the type the exact column name. Even if you write a partial name of the column, my utilities will locate the right column. For example, if you want to sort by the 'Last Modified' column, you can specify only 'Modified' as column name:
    IECacheView.exe /shtml c:\temp\iec.html /sort "Modified"

Notice: In all examples  specified above, I used IECacheView utility to demonstrate the command-line sorting feature.  However, you can use this feature in the same manner for all utilities that I add the sorting option.

Command-Line options added for the Blue Screen viewer utility

Sunday, September 13th, 2009

The new version of BlueScreenView (v1.10)  provides a few command-line options that allows you to choose the desired MiniDump folder and to save the MiniDump crashes list into  text/html/xml/csv file, without displaying any user interface.

Here's the list of all changes in version 1.10:

  • Added accelerator keys for allowing you to toggle between modes more easily.
  • Added command-line options for saving the crash dumps list to text/csv/html/xml file.
  • Added command-line option for opening BlueScreenView with the desired MiniDump folder.
  • Fixed focus problems when opening the 'Advanced Options' window.
  • Added 'default' button to the 'Advanced Options' window.
  • Added 'processor' column - 32-bit or x64.

This new version of BlueScreenView is available in this page.

New file-extensions information Web site: extension.nirsoft.net

Monday, September 7th, 2009

I created a new Web site which provides general information about file extensions and which software can open or use them: http://extension.nirsoft.net.
Currently, this Web site is based on extension information sent from my FileTypesMan utility by me and by some other users. It's possible that in the future, I'll also  enable the visitors  of extension.nirsoft.net Web site to add their own extension description and remarks.

extension.nirsoft.net Web site

extension.nirsoft.net Web site

I also added a new option for both FileTypesMan utility and ShellMenuView utilities that allows you to easily open your Web browser in the right file extension page.

If you want to help this extension database to grow, you are welcomed to  add extension information stored in your own computer into http://extension.nirsoft.net Web site, by using the 'Send Report To extension.nirsoft.net' option.  Full instructions about how to do it are available in the main page of extension.nirsoft.net Web site.

Also, be aware that this 'Send Report' option only send general information about the extension and which program opens it on your computer. It doesn't send any personal or private information that might reveal your identity.