WTF Is “Bulk Texture File Conversion” Shell-Menu-Item

The Convert to file format... context-menu item
and Bulk Texture File Conversion dialog,
are a shell-contextmenu item, added after registering TxView.dll which is a part of DirectX SDK package.

You’ll have the menu-item when you’ll right-click on the a Directory, jpegfile, Paint.Picture, pfmfile, pngfile and TxView.1 file-types classes,

If you were surprised to see it,
it is because you probably have a lot of hooks (or “handlers”)
registered into (the most common way to notice it) a folder’s-ShellEx,
it is not uncommon that less-prioritised items get to be pushed-back,
out of sight, for me the screen-size of the Lenovo x220 laptop I use,
limits the height of the context-menu, so up until I’ve removed some hooks (antivirus shell, zip menu, etc..)
and browsed some folders using the browse-for-folder dialog (which limits the amount of handlers used),
I didn’t noticed it ;)

Anyway, it is related to DirectX-SDK installations,
So if you are reading this article, you’ve probably also installed the DirectX SDK package :]

You can read more about texture converting, if that’s your “thing” in
Microsoft’s GitHub-entry for DirectXTex: https://github.com/Microsoft/DirectXTex/ and blogs.msdn.microsoft.com/chuckw/2014/10/28/directx-sdk-tools-catalog/.

Registry keys used:

Windows Registry Editor Version 5.00

;just a context-menu
[HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

;just a context-menu
[HKEY_CLASSES_ROOT\TxView.1\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

;just a context-menu
[HKEY_CLASSES_ROOT\pngfile\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

;just a context-menu
[HKEY_CLASSES_ROOT\pfmfile\shellex\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

;just a context-menu
[HKEY_CLASSES_ROOT\Paint.Picture\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

;just a context-menu
[HKEY_CLASSES_ROOT\jpegfile\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

;the shell-extension registration
[HKEY_CLASSES_ROOT\CLSID\{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}\InProcServer32]
@="C:\\Program Files (x86)\\Microsoft DirectX SDK (June 2010)\\Utilities\\bin\\x64\\TxView.dll"
"ThreadingModel"="Apartment"

;the shell-extension registration (cache)
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Cached]
"{9F95CA1A-E80E-4C0F-ACD1-4C9B7900B982} {000214E4-0000-0000-C000-000000000046} 0xFFFF"=hex:01,\
  00,00,00,00,00,00,00,26,83,60,ee,53,cb,d1,01

And you might be having either C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x86\TxView.dll or C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\TxView.dll as the actual shell-extension DLL.

With the following functions exported for the x64 version

bp 0x80003f14;bp 0x80003f04;bp 0x80002e6c;bp 0x80002e48

DllCanUnloadNow	0x0000000180002e48	0x00002e48	1 (0x1)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\TxView.dll	Exported Function	
DllGetClassObject	0x0000000180002e6c	0x00002e6c	2 (0x2)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\TxView.dll	Exported Function	
DllRegisterServer	0x0000000180003f04	0x00003f04	3 (0x3)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\TxView.dll	Exported Function	
DllUnregisterServer	0x0000000180003f14	0x00003f14	4 (0x4)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\TxView.dll	Exported Function	

and for the x86 version:

DllCanUnloadNow	0x10002995	0x00002995	1 (0x1)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x86\TxView.dll	Exported Function	
DllGetClassObject	0x100029b3	0x000029b3	2 (0x2)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x86\TxView.dll	Exported Function	
DllRegisterServer	0x1000367f	0x0000367f	3 (0x3)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x86\TxView.dll	Exported Function	
DllUnregisterServer	0x1000368c	0x0000368c	4 (0x4)	TxView.dll	C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x86\TxView.dll	Exported Function	

To remove it from the context-menu (not “uninstalling it”, just hiding it – it is perfectly safe and reversible..)

Windows Registry Editor Version 5.00
;removing the context-menu-item without "really uninstalling"
[-HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Convert]
[-HKEY_CLASSES_ROOT\TxView.1\ShellEx\ContextMenuHandlers\Convert]
[-HKEY_CLASSES_ROOT\pngfile\ShellEx\ContextMenuHandlers\Convert]
[-HKEY_CLASSES_ROOT\pfmfile\shellex\ContextMenuHandlers\Convert]
[-HKEY_CLASSES_ROOT\Paint.Picture\ShellEx\ContextMenuHandlers\Convert]
[-HKEY_CLASSES_ROOT\jpegfile\ShellEx\ContextMenuHandlers\Convert]

bring it back by running:

Windows Registry Editor Version 5.00
;bring back a previouly removed context-menu item (assuming it is still registered)
[HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

[HKEY_CLASSES_ROOT\TxView.1\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

[HKEY_CLASSES_ROOT\pngfile\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

[HKEY_CLASSES_ROOT\pfmfile\shellex\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

[HKEY_CLASSES_ROOT\Paint.Picture\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

[HKEY_CLASSES_ROOT\jpegfile\ShellEx\ContextMenuHandlers\Convert]
@="{9f95ca1a-e80e-4c0f-acd1-4c9b7900b982}"

*All those registry-codes needs to be copy&pasted to a file with the .reg extension,
afterwards you double-click/run the file, so the content will be embedded.

Enjoy :]