As I'm working on my Silverlight app and releasing it in the wild, I'm finding some cases that I would not normally deal with as a website developer.  The latest gotcha has been saving user settings.

So going back to my GiveCamp app idea... let's say that I want to give the end user a way to set a default GiveCamp.  I would need that piece of information stored somewhere.  I figured Isolated Storage would be a great spot for saving the data.  However, Silverlight doesn't support roaming profiles.  Normally, I wouldn't be concerned about that; I remember the headaches of roaming profiles from when I worked IT and I would love to chalk it up as yet another issue with roaming profiles.  But there's another part of me that wants to be able to save this data even if my end users are cursed with roaming profiles.

I'm sure I'm not the only Silverlight dev out there who's run into this.  Are there others out there who have run into the roaming profiles issue?  If so, what have you done to make your app accessible to users bound by roaming profiles?

While playing around with Silverlight 4 and working on my demos for my talk on Tuesday at the Cleveland WPF User Group, I came across a peculiar situation.

I've got a webcam demo and wanted to see just what I could do with it to add my touches to it.  Of course, being the curious one, I had to wonder... "What if I denied access to my devices?  How does this really work?"

My setup, for reference:

 

And the permissions:

 

 

 

From what I was able to find out in my testing, it looks like the permissions work properly when in the browser (using Google Chrome).  However, when I run this as an out-of-browser app, it looks like the permissions are getting ignored.

Here's my app in the browser:

 

And when it's outside of the browser, I get this:

 

 

Is this really how these permissions are supposed to be working?  Am I missing something?  As an end user, if I told an application not to use my webcam but installed it to my desktop for other cool features (maybe an enhanced Twitter client or something), I wouldn't want it to access my webcam.

* Edited 5/16/2010, 1:32AM Eastern Time*

So after seeing Dave Swersky's comment and looking into some other configurations, this is what I found out:

 

  • Webcam/mic permissions apply in-browser as expected
  • Webcam/mic permissions apply as expected when out-of-browser without elevated permissions.
  • Explicit webcam/mic deny permissions are being ignored when out-of-browser with elevated permissions.
So if I wanted to do an enhanced Twitter client with webcam/mic access and have a quirky end user who denies access to those resources, their quirks will be raised if they run the app out-of-browser, because chances are high that I'll be creating an app with custom chrome, which needs elevated access to work.