Disable prompt to convert videos copied to media device

I have a Samsung Galaxy S II, which when connected to my Windows 7 computer acts as a "Portable Media Player"

GT-I9100 Portable Media Player

Whenever I try to copy a video onto the device, it prompts if I want to convert it, like so:

Do you want to convert <video> before it's copied to your device?

This gets quite annoying in the long run, so I'd like to disable it.

Is there a way to disable these prompts?


Why this happens

That prompt is one of the features Windows implements for devices connected as MTP devices. The most sure way to disable it is to connect your Galaxy SII in USB Mass Storage mode. This way, Windows will detect it as a normal flash drive and will transfer files like any other flash drive without caring about the type. Some (desired) more advanced functionality may be lost, however.

The two basic ways to stop this from happening:

  • Connect the phone in Mass Storage mode.

  • Disable the shell extension on Windows that handles this. There are two ways to do this:

    • Unregister the .dll.

    • Disable the extension with ShellExView.


Option 1: Changing the phone connection mode

Enabling Mass Storage mode on Galaxy SII ICS (Android 4.x) (source):

  1. Bring up Settings.
  2. Click More… (under Wireless and network).
  3. Then select USB utilities ~ Set USB cable connection mode.
  4. Select Connect storage to PC then.
  5. Connect USB cable from phone to PC.
  6. Select Turn on USB storage. That’s all.

Option 2: Unregistering the .dll for the Windows shell extension that handles this

If you wish to keep using MTP mode for whatever reason, there has been a thread created on microsoft Answers specifically addressing disabling this prompt. Specifically:

Well, I previously couldn't find references to that dialog in any Windows 7 DLL file, so I thought that it wasn't Windows-related. But I have now looked again and found references to it in wpdshext.dll. So it does appear to be a standard Windows feature, my apologies.

I suggest that you try unregistering the DLL in question. Please open the Start Menu, go to All Programs - Accessories, right-click Command Prompt, and select Run as administrator. Then type the following command:

regsvr32 /u wpdshext.dll

You should probably restart after running the command.

I have not tried this method personally, and unregistering standard Windows DLLs may have unexpected consequences. If anything does go wrong, I recommend you start in Safe Mode and run regsvr32 wpdshext.dll in an elevated command prompt.


Disabling the shell extension

This method may be safer than unregistering a .dll.

  1. Download ShellExView

  2. Find the extension named Portable Devices Menu

  3. Right click > Disable Selected Items

  4. Restart your computer (to be safe)


As nothing mentioned works for me on Windows 8.1, here's alternative approach using a script in AutoHotkey.

dlgTitle := "Copy"
dlgBtnUnwantedAction := "No, skip this file"
dlgBtnWantedAction := "Yes"
dlgTitleAlt := "Convert and Copy"
dlgBtnUnwantedActionAlt := "Yes, convert and copy (recommended)"
dlgBtnWantedActionAlt := "No, just copy"
dlgBtnCancel := "Cancel"
GroupAdd, dlgTitles, %dlgTitle% ahk_class #32770
GroupAdd, dlgTitles, %dlgTitleAlt% ahk_class #32770

SetTitleMatchMode 3
matchFound := false

Loop
{
    WinWait ahk_group dlgTitles
    matchFound := false

    ControlGetText, button1Text, Button1, ahk_group dlgTitles
    if ( button1Text = dlgBtnUnwantedAction || button1Text = dlgBtnUnwantedActionAlt ) {
        ControlGetText, button2Text, Button2, ahk_group dlgTitles
        if ( button2Text = dlgBtnWantedAction || button2Text = dlgBtnWantedActionAlt ) {
            ControlGetText, button3Text, Button3, ahk_group dlgTitles
            if ( button3Text = dlgBtnCancel ) {
                matchFound := true
            }
        }       
    }

    if ( matchFound ) {
        ControlClick, Button2, ahk_group dlgTitles
    } else {
        WinWaitClose ahk_group dlgTitles
    }
}

Years later... there may be a way. Open regedit as administrator and head to

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\

Backup this "FormatMap".

Next, we'll try to fool Windows... Basically, you'll have to copy the content of "Format" and "ContentType" keys from a format to another.

Try to use these source formats :

.gif, .bmp for images (jpeg, png...) :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.gif]
"Format"="{38070000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{EF2107D5-A52A-4243-A26B-62D4176D7603}"

.wma for audio (mp3,mp4, aac, flac...) :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.wma]
"Format"="{B9010000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{4AD2C85E-5E2D-45E5-8864-4F229E3C6CF0}"

.wmv for video (avi mp4...) :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.wmv]
"Format"="{B9810000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{9261B03C-3D78-4519-85E3-02C5E1F50BB9}"

.doc, .xls, .ppt for documents or other files :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.doc]
"Format"="{BA830000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{680ADF52-950A-4041-9B41-65E393648155}"

e.g., the original key for flac is

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.flac]
"Format"="{B9060000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{4AD2C85E-5E2D-45E5-8864-4F229E3C6CF0}"

So we'll just change it to WMA's ID:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.flac]
"Format"="{B9010000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{4AD2C85E-5E2D-45E5-8864-4F229E3C6CF0}"

We could also add new formats, like .m4a (audio mp4) :

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Portable Devices\FormatMap\.m4a]
"Format"="{B9010000-AE6C-4804-98BA-C57B46965FE7}"
"ContentType"="{4AD2C85E-5E2D-45E5-8864-4F229E3C6CF0}"

However, it may have unwanted effects on any app using theses keys... Maybe WMP ?


My solution was to just patch wpdshext.dll

On my system (Windows 7 x64, with WMP not installed) the function that opens the confirmation box is

long __cdecl CObjectPropertyChecker::_DoesObjectMatchDeviceCapabilities(int)

which returns 0 if the copy is allowed, otherwise 1.

I just replaced the first few bytes of the function with:

xor rax,rax
ret

so it always returns 0.

Working well so far; I'll report back if I notice any unexpected results.


for reference, the CRC of my wpdshext.dll was d6ca5ac8, before patching

and _DoesObjectMatchDeviceCapabilities is at RVA 0x95118