Доступ к системным каталогам с использованием C # - PullRequest
0 голосов
/ 02 января 2019

У меня есть программа, которая содержит локальную базу данных Он работает нормально, когда я запускаю его из несистемного каталога, но когда я запускаю его из системного каталога, такого как каталог программных файлов, я не могу получить доступ к своей базе данных Я использую c # wpf. Понятия не имею, как получить доступ к моей базе данных: /

что я использую модель данных сущностей, которая работает с этой базой данных в каталоге приложения (который будет находиться в каталоге файлов программы). Как и любое другое приложение, которое я устанавливаю, например, приложения Adobe MS Office и т. данные в каталоге программных файлов без получения разрешения от пользователя? !!! : ((

Ответы [ 4 ]

0 голосов
/ 02 января 2019

Вы не должны сохранять данные программы в папке приложения, так как у вас нет к ней доступа без изменения прав пользователя или использования прав администратора.Вы должны использовать Environment.SpecialFolder .

Например,

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\YourApplication"

Это также то, что, например, используют Adobe Flash или MS Office.

0 голосов
/ 02 января 2019

Без сообщений об ошибках трудно угадать, в чем ваша проблема.

Мое предположение: вам нужны права администратора для записи в C:\Program Files.

Данные, которые изменяются вашей программой (файлы или базы данных), не должны содержаться в этом каталоге!

Это механизм безопасности для защиты ваших программ (не только тех, которые вы создали) от изменения другими пользователями.

0 голосов
/ 02 января 2019

РЕДАКТИРОВАТЬ: здесь код для использования папки данных приложения

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        GetDB();
    }

    void GetDB1()
    {
        var DBFile = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "DB1");
        var con = new System.Data.SQLite.SQLiteConnection($"Data Source={DBFile}.sqlite;Version=3;");
        con.Open();
        string sql = "Select 1 as col1";
        var command = new System.Data.SQLite.SQLiteCommand(sql, con);
        var reader = command.ExecuteReader();
        while (reader.Read())
            Console.WriteLine("col1: " + reader["col1"]);
    }
}

просто в окне проверьте права доступа к папке, как на картинках


подробнее

1.Программное обеспечение

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

  • Для простоты существует два основных типа

    • программное обеспечение операционной системы

    • Прикладное программное обеспечение

2.программное обеспечение операционной системы

Операционная система (ОС) - это системное программное обеспечение, которое управляет аппаратными и программными ресурсами компьютера и предоставляет общие службы для компьютерных программ.

3.Структура каталогов

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

4.Windows 10 [имя пользователя] \ AppData

В этой папке хранятся данные и настройки приложений для каждого пользователя.Папка содержит три подпапки: Roaming, Local и LocalLow.Роуминг предназначен для сетевых входов в систему для перемещаемых профилей.Данные, сохраненные в роуминге, будут синхронизироваться с компьютером при входе пользователя в систему.Local и LocalLow не синхронизируются с сетевым компьютером

5.Рекомендации: Сохраняйте и извлекайте настройки и другие данные приложения

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

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

  • Часто это данные, которыми пользователь хочет манипулировать или передавать как объект, независимый от самого приложения, например, документ.

- Важное примечание о данных приложения : время жизни данных приложения связано с временем жизни приложения.Если приложение будет удалено, все данные приложения будут потеряны.Не используйте данные приложения для хранения пользовательских данных или чего-либо, что пользователи могут воспринимать как ценные и незаменимые.Мы рекомендуем использовать библиотеки пользователя и Microsoft OneDrive для хранения такого рода информации.Данные приложения идеально подходят для хранения пользовательских настроек, настроек и избранного для конкретного приложения.

6. Контроль доступа

Контроль доступа относится к функциям безопасности, которые контролируют доступ к файлам (ресурсам) воперационная система (ОС).

7. Какова связь между операционной системой и прикладным программным обеспечением

  • Все приложения вызывают функции управления доступом в операционной системе (ОС) для доступа к определенным ресурсам или управления доступомк ресурсам, предоставляемым приложением.

  • Итак, ваше приложение Вам нужно, как пользователю, который имеет контроль над операционной системой, запрашивать у операционной системы разрешение на папку

  • Итак, вам нужен код C # + разрешение ОС

8.Как применять эти понятия

  • 8.1.Запуск от имени администратора, поскольку у них есть права доступа
  • 8.2.Проверьте папку, в которой находится приложение
  • 8.3.Добавить разрешение в папку для текущего пользователя

8.1.Запуск от имени администратора, поскольку у них есть права доступа

8.1.1 Как

enter image description here

8.1.2 Почему

enter image description here

8.1.3 Почему NoT

Почему вы не должны работать от имени администратора ... - Aaron Margosis 'Non-Admin, App-Compat и Sysinternals WebLog

Если эксплойт написан так, что для него требуются права администратора (как делают многие), то просто выполнение, когда пользователь останавливает его.Но если вы работаете как администратор, эксплойт может:

  • inостановка руткитов и / или клавиатурных шпионов в режиме ядра (которые почти невозможно обнаружить)
  • установка и запуск служб
  • установка элементов управления ActiveX, включая надстройки IE и оболочки (общие для программ-шпионов)и рекламное ПО)
  • доступ к данным, принадлежащим другим пользователям
  • запуск кода при каждом входе в систему (включая захват паролей, введенных в диалог входа в систему с помощью Ctrl-Alt-Del)
  • заменить ОС и другие программные файлы троянскими конями
  • получить доступ к секретам LSA, включая другую конфиденциальную информацию об учетной записи, возможно, включая информацию об учетной записи для учетных записей домена
  • отключить / удалить антивирус
  • скрыть свои следы в журнале событий
  • сделать вашу машину не загружаемой
  • если ваша учетная запись является администратором на других компьютерах в сети, вредоносная программа также получает административный контроль над этими компьютерами
  • и многое другое

8.2.Проверьте папку, в которой находится приложение

In Windows chec

enter image description here

enter image description here

8.3.Добавить разрешение в папку для текущего пользователя

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

Ссылка

0 голосов
/ 02 января 2019

Я публикую это как ответ, потому что я пока не могу комментировать, однако я бы проверил следующее:

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

Но без кода трудно сказать

...