Running The Boot Camp Control Panel Applet from Windows 8 on MacBook Pro

August 16, 2012

12 comments

As John Robbins repeatedly likes to say, Apple computers are the best hardware for running Windows. To quote, “a Mac Pro […] it’s the best Windows machine money can buy”. After yesterday’s release of Windows 8 to MSDN subscribers, I went along and installed it on my new MacBook Pro.

Everything went fine—the setup was blazingly fast, all drivers were successfully installed, except for the pesky Apple trackpad settings that were way off what a Windows user comes to expect. In case you don’t know, MacBook trackpads look like this:

There’s no left or right button; just a solid sheet of multi-touch goodness. Well, not-so-goodness—the default gesture for right-click on this trackpad is the following: tap the trackpad with two fingers and simultaneously click with a third finger. (Or, you know, use Shift-F10 every time.)

Typically you’d go to the Control Panel, launch the Boot Camp control panel applet and change all these settings. When I did that, the control panel applet required UAC elevation and then refused to start, claiming that I don’t have access to my startup disk. It’s worth noting that I haven’t requested access to my startup disk.

Scouring the web for hints, I found a post indicating that if you use a standard user account to launch the Boot Camp control panel applet, it works just fine and lets you change the right-click trackpad settings. That’s what I did, only to find the changes made under the new user account do not affect my primary (“Microsoft Account”-enabled) user account.

That’s when I realized that I shouldn’t have been messing around with the secondary user account at all. In fact, it would suffice to launch the control panel applet as standard user, bypassing the elevation process, and it would work fine. So the final piece of puzzle is how to launch a process as standard user when it demands UAC elevation.

This takes me back to the first days of Windows Vista (and this blog), when I even wrote a library called UACHelpers that allows various customizations of this sort. One way or another, to determine whether the program should run elevated Windows consults its manifest. In the case the Boot Camp control panel applet, it says “highestAvailable”, which means that if the user is an administrator, he will be prompted for elevation prior to running the application. We need to modify this to “asInvoker”, so that if the current token is non-elevated, it will be used without prompting for elevation.

I made a copy of the Boot Camp control panel applet (C:\Windows\System32\AppleControlPanel.exe), extracted its manifest using the mt.exe tool, modified it to avoid requesting elevation, embedded it back into the executable, and voila!—everything worked just fine.

In other words:

> copy C:\windows\system32\AppleControlPanel.exe .
> mt.exe -inputresource:AppleControlPanel.exe;#1
         -out:extracted.manifest
> sed –i ” -e’s/highestAvailable/asInvoker’
      extracted.manifest
> mt.exe -outputresource:AppleControlPanel.exe;#1
         -manifest extracted.manifest

To summarize, the days of writing Application Compatibility training kits paid off again.


I am posting short updates and links on Twitter as well as on this blog. You can follow me: @goldshtn

Add comment
facebook linkedin twitter email

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

12 comments

  1. John RobbinsAugust 16, 2012 ב 6:53 PM

    Hi Sasha,

    Well, now I say that Macs are the SECOND best hardware for running Windows. I think the upcoming Microsoft Surface will take that role. 😀

    – John Robbins

    Reply
  2. JasonAugust 18, 2012 ב 1:14 AM

    Thank you, you’re a lifesaver! For whatever reason the sed command didn’t work for me, so I went ahead and modified the manifest by hand

    Reply
  3. Paul MineiroAugust 21, 2012 ב 8:01 AM

    My Windows 8 (enterprise x64 rtm) install claims

    C:\>copy C:\windows\system32\AppleControlPanel.exe .
    The system cannot find the file specified.

    which is weird because if I search for AppleControlPanel in file explorer I get something called AppleControlPanel and under properties it claims to be located at C:\Windows\System32

    Of course, I _am_ a Windows noob … but that’s the point, right?

    Reply
  4. Sasha GoldshteinAugust 27, 2012 ב 7:12 AM

    @Paul – you might be running a 32-bit version of the command prompt, in which you’re typing the copy command. You can go to C:\Windows\System32 in Explorer and copy the file manually to whatever location you like.

    Reply
  5. Shayne BoyerAugust 28, 2012 ב 3:14 AM

    mt.exe fails with this statement…

    sed –i ” -e’s/highestAvailable/asInvoker’

    extracted.manifest

    Reply
  6. PhilSeptember 11, 2012 ב 11:03 PM

    Very frustrating, these instructions just don’t work. When you run SED (after finding it of course, since it’s not a tool that comes with VS or windows) running it (using GnuWin32’s version) has syntax errors:

    sed: -e expression #1, char 1: unknown command: `”

    Reply
  7. Sasha GoldshteinSeptember 13, 2012 ב 4:25 PM

    @Shayne: The “extracted.manifest” line should be on the same line. Also, it seems you’re using a dash instead of a minus sign with the -i command.

    Reply
  8. CapnJackSeptember 20, 2012 ב 5:04 AM

    Want something simpler – follow these instructions:
    1) Download Microsoft Application Compatability Toolkit 5.6

    2) Click Fix

    3) Choose the RunAsInvoker option
    Save Database somewhere

    4) Right Click the fix and choose Install
    * It won’t remove the UAC Admin icon, but it does open and work!

    Reply
  9. NeilOctober 3, 2012 ב 5:03 PM

    Thanks CapnJack!

    This fix worked for me and I didn’t have to go command line or install visual studio!

    Reply
  10. Bruno MOctober 21, 2012 ב 4:48 AM

    You can skip the second command.

    For the extracted file (extracted.manifest) is just an XML, you can edit anywhere by hand (like on Notepad) then execute the last command:

    > mt.exe -outputresource:AppleControlPanel.exe;#1 -manifest extracted.manifest

    OR, if you don’t have and don’t want Windows SDK (to get MT.exe) you can just edit the ‘AppleControlPanel.exe’ file on any Hex Editor (like HxD), search for “highestAvailable” and manually change it for “asInvoker”.

    MAKE SURE you substitute the remaning original characters for spaces, so you don’t modify the file size, for it to continue to work.

    Just save and run it!

    Reply
  11. RonDecember 4, 2012 ב 2:32 AM

    Great article. Described my problem and the resolution. A link to the SED tool will help make the process a bit simpler but the comment by another user to just edit the extracted.manifest as an XML solved the problem for me.

    Thanks! Your solution worked for me.

    Reply