Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
6 / 6 / 1
Регистрация: 17.08.2012
Сообщений: 75
1

Отказ в доступе при чтении XML-ридером

02.10.2012, 12:42. Показов 1397. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Пишу XML-парсер, но выкидывает ошибку Access to the path 'C:\Documents and Settings\All Users\Документы' is denied.
вот в этом месте
C#
1
2
3
4
5
6
7
8
9
idReader = new XmlTextReader(xmlPath);
        idReader.WhitespaceHandling = WhitespaceHandling.None;
        while (idReader.Read())
            if (idReader.NodeType == XmlNodeType.Element)
                if (idReader.Name == "STATIONCONF")
                {
                    Site_ID id = new Site_ID(idReader.GetAttribute("ID"));
                    Sid.Add(id);
                }
Пробовал прописывать путь вручную, типа "C:\" - ошибка та же. В консоли данный код работает успешно, но нужно делать windows.forms.
В чем может быть причина?

Полный листинг:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
namespace XmlPars_FormsApp
{
    public class Site_ID
    {
        string SiteID;
 
        public Site_ID(string SiteID)
        {
            this.SiteID = SiteID;
        }
        public string sitID
        {
            get { return SiteID; }
        }
    }
 
    public partial class Frm_main : Form
    {
        string xmlPath; //путь к файлам xml
 
        public Frm_main()
        {
            InitializeComponent();
            lstBox_sites.Sorted = true;
            DirectoryInfo dirInfo; //каталог
            dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments));
            xmlPath = dirInfo.FullName;
            cmb_path.Text = xmlPath;
 
            //список xml-файлов
            XMLList(xmlPath);
 
        }
        public Boolean XMLList(string xmlPath)
    {
        ArrayList Sid = new ArrayList();
        XmlDocument xdoc = new XmlDocument();
        XmlNodeList idList = xdoc.GetElementsByTagName("STATIONCONF");
        XmlTextReader idReader = null;
        idReader = new XmlTextReader(xmlPath);
        idReader.WhitespaceHandling = WhitespaceHandling.None;
        while (idReader.Read())
            if (idReader.NodeType == XmlNodeType.Element)
                if (idReader.Name == "STATIONCONF")
                {
                    Site_ID id = new Site_ID(idReader.GetAttribute("ID"));
                    Sid.Add(id);
                }
 
        DirectoryInfo dirInfo = new DirectoryInfo(xmlPath);
        //инфо о файлах
        FileInfo[] fi = dirInfo.GetFiles("Site.xml", SearchOption.AllDirectories);
        lstBox_sites.Items.Clear();
 
        // добавим файлы в листбокс
        foreach (FileInfo fc in fi)
        {
            foreach (Site_ID ids in Sid)
            {
                lstBox_sites.Items.Add(ids.sitID);
            }
            
        }
        cmb_path.Text = xmlPath;
        if (fi.Length == 0)
            return false;
        else
        {
            lstBox_sites.SelectedIndex = 0;
            return true;
        }
    }
 
        private void btn_browse_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "Выберите папку";
            fbd.ShowNewFolderButton = false;
            //диалоговое окно
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                xmlPath = fbd.SelectedPath;
                cmb_path.Text = xmlPath;
                if (!XMLList(fbd.SelectedPath))
                    MessageBox.Show("В этом каталоге нет файлов Sites.xml","Нет файлов");
            }
            XMLList(xmlPath);
 
        }
        
    }
}
Миниатюры
Отказ в доступе при чтении XML-ридером  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2012, 12:42
Ответы с готовыми решениями:

Неясности при работе с xml ридером
Приветствую всех) Вообщем возникла проблема, не могу понять что не так. Есть такой xml документ:...

Отказ в доступе при записи в файл
Суть в том, что я не могу сохранить файл ,а если быть точнее картинку в формате .bmp . Сначала...

Отказ в доступе при установке программ
При установке любой программы возникает ошибка failed to create extraction path потом путь до папки...

Отказ в доступе при сохранении файла
Этот обработчик получает выбранные пользователем путь и добавляет к нему название файла procedure...

5
24 / 23 / 3
Регистрация: 21.04.2012
Сообщений: 253
02.10.2012, 17:37 2
А нельзя из папки debug запустить программу с правами администратора ?
Ну попробовать
0
6 / 6 / 1
Регистрация: 17.08.2012
Сообщений: 75
02.10.2012, 17:45  [ТС] 3
Не запускается. Как обычным двойным щелчком, так и от имени админа
0
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
03.10.2012, 08:33 4
C#
1
dirInfo = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments));
это что такое?
И что это такое?
C#
1
2
3
4
5
6
7
8
9
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "Выберите папку";
            fbd.ShowNewFolderButton = false;
            //диалоговое окно
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                xmlPath = fbd.SelectedPath;
                cmb_path.Text = xmlPath;
                if (!XMLList(fbd.SelectedPath))
Где именно путь к файлу?
Вы передаете путь к папке, а конструктор XmlTextReader требует файл.

При чем тут вообще доступ? у вас даже сообщение об ошибке об этом говорит
0
6 / 6 / 1
Регистрация: 17.08.2012
Сообщений: 75
03.10.2012, 10:32  [ТС] 5
Цитата Сообщение от Konctantin Посмотреть сообщение
конструктор XmlTextReader требует файл
Я пытаюсь в каталоге перебрать все xml-файлы и из каждого считать атрибут ID.
Как тогда получить путь к кажому файлу?

Цитата Сообщение от Konctantin Посмотреть сообщение
даже сообщение об ошибке об этом говорит
О чем - "об этом"? В сообщении написано access is denied
0
158 / 148 / 25
Регистрация: 23.01.2011
Сообщений: 319
03.10.2012, 16:54 6
Цитата Сообщение от Lamak Посмотреть сообщение
получить путь к кажому файлу
C#
1
var files = System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments), "*.xml");
0
03.10.2012, 16:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2012, 16:54
Помогаю со студенческими работами здесь

Отказ в доступе при сохранении файла
Установил программу, в ее основной папке открыл и изменил файл, но при сохранении пишет "Отказано в...

Отказ в доступе при вызове createNewFile
Уважаемые программисты, подскажите пожалуйста, как предоставить программе доступ для создания и...

Отказ в доступе при сохранении файлов
Здравствуйте! Перечитал много тем ,но ничего не нашел,может и плохо искал. По порядку: ...

Отказ в доступе при использовании команды DEL
на диске D:\ лежат 2 файла: 1) file.exe (созданный мной) 2) fpc.exe (взял из Free...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru