C# 不允许文件操作。在savedialog.sDialog.OpenFile()中对路径“”的访问被拒绝

C# 不允许文件操作。在savedialog.sDialog.OpenFile()中对路径“”的访问被拒绝,c#,excel,silverlight,internet-explorer,windows-8,C#,Excel,Silverlight,Internet Explorer,Windows 8,我正在使用lib在silverlight 4中导出excel,它在windows 7中工作,问题是,相同的应用导出excel在windows 8 IE中不工作,它在sDialog.OpenFile中抛出错误,但在windows 8 chrome中工作正常 不允许文件操作。对路径的访问被拒绝 Windows 8 IE有此限制,或者我做错了什么?您没有设置SaveFileDialog.InitialDirectory属性。现在,您严重依赖于默认的工作目录,无论您使用的浏览器可能是哪一个。Chrome

我正在使用lib在silverlight 4中导出excel,它在windows 7中工作,问题是,相同的应用导出excel在windows 8 IE中不工作,它在sDialog.OpenFile中抛出错误,但在windows 8 chrome中工作正常

不允许文件操作。对路径的访问被拒绝


Windows 8 IE有此限制,或者我做错了什么?

您没有设置SaveFileDialog.InitialDirectory属性。现在,您严重依赖于默认的工作目录,无论您使用的浏览器可能是哪一个。Chrome对此相当顽皮,选择了一个不受UAC保护的安装位置。我遵守规则。使用Environment.GetFolderPath从安全的起点开始,如用户的文档目录。IE10中增强的保护模式功能可能会给您带来更多麻烦。但在SL 4中没有SaveFileDialog.InitialDirectory,请改用Environment.CurrentDirectory。
void exportExcel_Click(object sender, RoutedEventArgs e)
{
    SaveFileDialog sDialog = new SaveFileDialog();
    sDialog.Filter = "Excel Files(*.xls)|*.xls";
    if (sDialog.ShowDialog() == true)
    {
        Workbook workbook = new Workbook();
        Worksheet worksheet = new Worksheet("Friends");
        // write data in worksheet cells
        worksheet.Cells[0, 0] = new Cell("Column1");
        worksheet.Cells[0, 1] = new Cell("Column2");
        worksheet.Cells[0, 2] = new Cell("Column3");
        worksheet.Cells[1, 0] = new Cell("string value");
        worksheet.Cells[1, 1] = new Cell(478574.5, "#,###.00");
        worksheet.Cells[1, 2] = new Cell(4);
        workbook.Worksheets.Add(worksheet);
        using (var stream = sDialog.OpenFile())
        {
            workbook.Save(stream);
        }
    }
}