Невозможно создать экземпляр класса - PullRequest
1 голос
/ 06 июня 2011

Невозможно создать экземпляр класса TestClass. Ошибка: System.UnauthorizedAccessException: Доступ к пути 'C: \ Documents and Settings \ Администратор \ Мои Документы \ Visual Studio 2010 \ Projects \ TestProject 'отклонено.

System.IO .__ Error.WinIOError (Int32 errorCode, String MaybeFullPath) System.IO.FileStream.Init (Строковый путь, Режим FileMode, доступ к FileAccess, Права Int32, логические права использования, Общий доступ к FileShare, размер буфера Int32, Опции FileOptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, логическое значение bFromProxy, логическое значение useLongPath) System.IO.FileStream..ctor (String путь, режим FileMode, FileAccess доступ, общий доступ к FileShare, Int32 bufferSize, параметры FileOptions, Строка msgPath, логическое bFromProxy) System.IO.FileStream..ctor (String путь, режим FileMode) KM_Automation.KM_Library.GetAutoConfig () в C: \ Documents and Settings \ Администратор \ Мои Документы \ Visual Studio 2010 \ Projects \ TestProject \ Test_Library.cs: строка 40 KM_Automation.KM_Functional_Trans_General..ctor () в C: \ Documents and Settings \ Администратор \ Мои Документы \ Visual Studio 2010 \ Projects \ TestProject \ TestClass.cs: Строка 33

Test_Library.cs:

public string[] GetAutoConfig()
{
    FileStream fs = new FileStream(sConfigFile, FileMode.Open);  // line 40
    StreamReader sr = new StreamReader(fs);
    string line = "";
    string[] arrline = new string[2];
}

TestClass.cs:

arrConfig = KMLib.GetAutoConfig(); // line 33

Почему я получаю эту ошибку? Я позаботился о том, чтобы папка была доступна всем, и удалил Только чтение

Ответы [ 3 ]

2 голосов
/ 06 июня 2011

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

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

C: \ Documents and Settings \ Administrator\ My Document

Если вы хотите поделиться с другими пользователями, я бы вместо этого использовал каталог All Users или Public, так как он предназначен для этого типа операций.

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

Когда он говорит, что у него нет разрешений, это, вероятно, так: если вы, например, запускаете веб-сайт, вы не можете прочитать ни одну папку, потому что ваш пользователь по умолчанию, который используется для анонимных посетителей, «помещается в« песочницу »с низкими разрешениямив файловой системе.

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

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

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

Когда вы открываете общий доступ к папке, Windows просматривает два набора разрешений: разрешения общего доступа, а затем фактические разрешения безопасности файла. Если безопасность вашей папки не разрешена всем пользователям для чтения, не имеет значения, какие настройки общего доступа установлены.

Рекомендуется установить уровень общего доступа на полный контроль, а затем точно настроить разрешения с помощью настроек безопасности. По умолчанию ваша папка пользователя (Администратор) доступна для записи и чтения только для этого пользователя и администраторов системы.

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