Skip to main content
  1. Writing/

Access Blocklisted Apps In The Windows Phone Emulator

·867 words

As you probably know, the Windows Phone SDK comes with an emulator that is locked down to the maximum – the developer only has access to Internet Explorer and to a limited number of settings. However, today I found out an indirect (and maybe not that optimal) way to access various applications that are blocklisted, but are still available on the device.

My journey started with XdeLauncher – a tool bundled with the Windows Phone SDK that facilitates the launch of the Windows Phone emulator. I wasn’t sure how exactly it works because it didn’t seem like it was invoking xde.exe. That also meant that it didn’t pass any custom parameters to it. In fact, parameters were there:

Image lost since transition to new blog.

So there is Windows Phone 7 and Windows Phone Emulator. This doesn’t tell me anything, so I proceed to launch Reflector and look at what this XdeLauncher does. I was not surprised to see a reference to the Microsoft.SmartDevice.Connectivity. Justin Angel was talking about it when he was automating the emulator/device, so it was only logical that it was the connection point here as well.

On my PC, this assembly was located at (obviously, the GAC folder):

c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SmartDevice.Connectivity\ 
v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.Smartdevice.Connectivity.dll

There is one method in particular that interested me there – GetApplication. If I pass an application GUID to it, I am able to launch it (as well as perform some other file manipulations). That’s all I needed at this point. For testing purposes, I put together this piece of code:

DatastoreManager manager = new DatastoreManager(CultureInfo.CurrentCulture.LCID); 
IEnumerable<Platform> platforms = manager.GetPlatforms(); 
IEnumerable<Device> devices = platforms.First().GetDevices();

Device d = devices.Last(); 
d.Connect();

d.GetApplication(new Guid("APP_GUID")).Launch();

NOTE: This is not production code. In my case, devices.Last() returned the emulator instance. You need to make sure that the operations are performed on a correct device, even though the applications will still launch on the phone (if connected).

So here is where the fun began. I got some system application GUIDs and tried passing them to the method to try and launch existing applications. So here goes.

Calculator #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5603

Image lost since transition to new blog.

About #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5605

Image lost since transition to new blog.

An interesting moment worth mentioning here is this – resetting your phone through this dialog won’t yield the result you are probably expecting. Basically, you will reboot the emulator with a complete data wipe as a bonus.

Phone Lock Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5607

Image lost since transition to new blog.

Also worth mentioning here – the timeout for the screen doesn’t work in the emulator exactly as it does on a physical device. If you define a plausible timeout for the emulator, you will lock the screen completely – it will stop responding to any feedback and you will have to restart XDE to continue working with it.

If you decide to execute code in the emulator while the screen is “frozen”, you will get this error:

Image lost since transition to new blog.

Message Hub #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5610

Image lost since transition to new blog.

Not exactly new, since SmsComposeTask also gets you close to this place.

Call History #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5611

Image lost since transition to new blog.

Also not exactly new, since I already was able to access this through an active call.

Calendar #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5612

Image lost since transition to new blog.

Account Manager #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5616

Image lost since transition to new blog.

SharePoint Mobile #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA561A

NOTE: Currently throwing an error at launch.

Image lost since transition to new blog.

Cellular Network Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA561F

Image lost since transition to new blog.

NOTE: Very interesting – multiple test networks that can be used to test the phone capabilities. Also useful when checking for a data connection. Look at the network icon in the status bar for details.

Image lost since transition to new blog.

Bluetooth Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5620

Image lost since transition to new blog.

Airplane Mode #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5621

Image lost since transition to new blog.

This will actually work, and the emulator will be set to Airplane Mode, disconnecting from all networks:

Image lost since transition to new blog.

Office Mobile Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5622

Image lost since transition to new blog.

WiFi Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5623

Image lost since transition to new blog.

Speech Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5624

Image lost since transition to new blog.

Zune #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5630

Image lost since transition to new blog.

Pictures #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5632

Image lost since transition to new blog.

Games #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5634

Image lost since transition to new blog.

Device Update Settings #

GUID: 5B04B775-356B-4AA0-AAF8-6491FFEA5640

Image lost since transition to new blog.

And that’s about it. For a lot of the applications described above, it is worth experimenting with them to find the possible effects on general OS behavior. This is a more “I know how to do it” approach because if you have a physical device, you don’t need any of these capabilities because you can experience them first-hand.

But what about Microsoft Office? #

Microsoft Office apps in the emulator image seem to be locked down, so currently you cannot access them the way I described above.