Out of browserで動かすときに信頼モードにすることができると聞いたので試してみました。
試した内容は、ダイアログを経由しないファイルアクセスです。
(本当はCOMオートメーション試したかったけど、Officeが家のPCに入ってないことに気づいた)
作ってみよう
まず、Silverlightアプリケーションを新規作成します。ここでは、FullTrustSLAppという名前で作りました。
ボタンを1つ、ぽとっと置いてContentにOpenと指定して、クリックイベントを割り当てます。
<UserControl x:Class="FullTrustSLApp.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <Button Content="Open" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> </Grid> </UserControl>
そして、クリックイベントに以下のコードを書きます。
using System; using System.IO; using System.Windows; using System.Windows.Controls; namespace FullTrustSLApp { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { try { // ドキュメントフォルダを取得 var docDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); // その下のtest.txtのパスをゲット var file = System.IO.Path.Combine(docDir, "test.txt"); // ファイルを開いて1行読み込んで string text = string.Empty; using (StreamReader sr = new StreamReader(file)) { text = sr.ReadLine(); } // 読み込んだものを表示する(何気にこれもSL4の機能) NotificationWindow notify = new NotificationWindow { Height = 100, Width = 100, Content = new TextBlock { Text = text } }; notify.Show(4000); } catch (Exception ex) { // よからぬことが起きてたら表示する MessageBox.Show(ex.ToString()); } } } }
単純にファイルを開いて表示してるだけです。表示にもNotificationWindowというSilverlight 4で追加されたものを使っています。
Out of browserの設定
プロジェクトのプロパティに「Enable running application out of the browser」と言う項目があるのでチェックをします。
そして、Out-of-Browser Settingsというボタンがあるのでクリックして設定画面を開きます。
設定画面の下の方に、Require elevated trust when running outside the browserという項目があるのでチェックします。これにチェックを入れると、ぶいぶい言わせることが出来るようになります。
このほかにも、Silverlight 3の頃に比べると設定項目が増えたような気がします。
実行してみよう
ドキュメントフォルダの下にHello worldという内容でtest.txtを作成しました。
その後にアプリケーションを実行します!実行すると、ブラウザで表示されるので、ファイルは読めないはずですけど、とりあえずボタンをぽちっとして動かしてみました。
やっぱり例外が出てファイルを読み込めません。
次に右クリックメニューから、このアプリケーションをインストールしてみます。
インストールすると、Out of Browserモードのアプリケーションが起動するので、ボタンをぽちっと押します。そうすると、今度はHello worldとデスクトップ画面の右下に出てきます。
確かに、ファイルが読めてます。以上!