Доступ запрещен по пути C: WPF C # - PullRequest
0 голосов
/ 21 июня 2011

Я хочу написать и прочитать файл file.rdl, чтобы создать отчет в wpf c #, но есть ошибка «Доступ запрещен к пути c: \ Document and Setting \ SipusProv \ Temp \ reportTemp.rdl. Это мой источниккод:

private void LaporanRdl(string rdl, DataSet data, string judul)
    {

        DataSet dt = data;
        dt.DataSetName= "Data";
        Masaddy.Reprot report = new Masaddy.Reprot();
        try
        {

            //System.IO.StreamReader strReader = new System.IO.StreamReader(AppDomain.CurrentDomain.BaseDirectory + @"\rdl\" + rdl + ".rdl");
            System.IO.StreamReader strReader = new System.IO.StreamReader(AppDomain.CurrentDomain.BaseDirectory + @"\rdl\" + rdl + ".rdl");
            string pathTemp = AppDomain.CurrentDomain.BaseDirectory + @"Temp\reportTemp.rdl";
            System.IO.StreamWriter strWriter = new System.IO.StreamWriter(pathTemp);

        string strIsi = "";
        while (strIsi != "</Report>")
        {

            strIsi = strReader.ReadLine().Trim();
            if (strIsi == "<Value>txtDep</Value>")
            {
                strIsi = "        <Value>" + this.ddDeputi.SelectedItem.ToString() + "</Value>";

            }
            if (strIsi == "<Value>txtDir</Value>")
            {
                strIsi = "        <Value>" + this.ddDir.SelectedItem.ToString() + "</Value>";

            }
            if (strIsi == "<Value>txtSubDir</Value>")
            {
                strIsi = "        <Value>" + this.ddSubDir.SelectedItem.ToString() + "</Value>";

            }
            if (strIsi == "<Value>txtTahun</Value>")
            {
                strIsi = "        <Value>" + this.txtTahun.Text.ToString() + "</Value>";

            }
            strWriter.WriteLine(strIsi);
        }
        strWriter.Dispose();
        Masaddy.ReportForm r = new Masaddy.ReportForm(AppDomain.CurrentDomain.BaseDirectory + @"\\Temp\\reportTemp.rdl", "Data", dt.Tables[0]);
        r.Text = judul;
        r.Show();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
        }

    }

Ответы [ 2 ]

1 голос
/ 21 июня 2011

«Доступ запрещен» означает именно то, что говорится. Настоящие вопросы

  • От какого пользователя работает ваш код?
  • На какие ресурсы влияет сбойная операция?
  • Какие разрешения обычно имеет этот пользователь для каждого из этих ресурсов?
  • UAC вступает в игру?

Бесполезно спрашивать остальной мир, почему разрешения в вашей конкретной системе. Только вы можете это расследовать.

Этот «вопрос» вызывает у меня ужасное желание сказать: «Пожалуйста, пришлите мне конфигурацию».

0 голосов
/ 21 июня 2011

я думаю, что вы запускаете программу под Windows Vista / 7 попробуйте использовать файл манифеста приложения

  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <!-- UAC Manifest Options
        If you want to change the Windows User Account Control level replace the 
        requestedExecutionLevel node with one of the following.

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
    <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

        Specifying requestedExecutionLevel node will disable file and registry virtualization.
        If you want to utilize File and Registry Virtualization for backward 
        compatibility then delete the requestedExecutionLevel node.
    -->
    <requestedExecutionLevel level="asInvoker" uiAccess="false" />
  </requestedPrivileges>
</security>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...