ShaHam11 Ответов: 1

Доступ к папке в сети через C#


Я получаю ошибку отказано в доступе, когда я получаю доступ к папке, которая является netwrok,
Однако локальный доступ в системе работает нормально перечисляет все файлы и папки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


namespace IBISApplication
{
    class Program
    {
        static void Main(string[] args)
        {

          
     
            DirSearch("\\\\10.143.14.140\\D$\\nrtfiles");
            //DirSearch(@"C:\Users\U6037395\Documents\TRWork");

            Console.ReadKey();


        }

        static void DirSearch(string dir)
        {
            try
            {
                foreach (string f in Directory.GetFiles(dir))
                    Console.WriteLine(f);
                foreach (string d in Directory.GetDirectories(dir))
                {
                    Console.WriteLine(d);
                    DirSearch(d);
                }

            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

    }
}


Что я уже пробовал:

Я попытался дать разрешение имеет все для сетевой папки
Добавлено мое имя Пользователя в разрешение общего доступа к папкам


Я получаю ошибку отказа в доступе.

1 Ответов

Рейтинг:
10

F-ES Sitecore

Вы получаете доступ к машине, используя общий ресурс администратора по умолчанию для диска (d$), маловероятно, что вы изменили разрешения для этого, так как для доступа к нему вам нужно быть администратором. Доступ к папке через соответствующий сетевой ресурс, чтобы вы могли контролировать права, не используйте "d$ " - это" взломанный " ресурс.

\\computername\sharedfoldername

чтобы удалить ресурс из выходных (звонить в работать в обычном режиме)

static void DirSearch(string dir, string rootDir = null)
{
    if (rootDir == null)
    {
        rootDir = dir;
    }
    try
    {
        foreach (string f in Directory.GetFiles(dir))
        {
            string filename = f.Substring(rootDir.Length);
            Console.WriteLine(filename);
        }
        foreach (string d in Directory.GetDirectories(dir))
        {
            Console.WriteLine(d);
            DirSearch(d, rootDir);
        }

    }
    catch (System.Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}


ShaHam11

спасибо за soultion я удалил d$ это сработало. Однако он дает полное имя пути меня интересует только имя папки и имя файла а не весь путь какие либо предложения по этому поводу?

F-ES Sitecore

Вам просто нужно будет удалить имя компьютера из полного пути всякий раз, когда вы показываете его на экране, я обновлю решение