Вы должны войти, чтобы создавать сообщения и темы.

Как пользоваться Enviroment или как указать путь к файлу

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

C:\Users\Slava\Documents\My Games\Rainbow Six - Siege\23c39dba-e493-4685-90be-d1ef4d9daa73\GameSettings.ini

Во-первых можете объяснить, как использовать класс Environment, прошу вас сердечно ❤
Во-вторых папка Скопировано23c39dba-e493-4685-90be-d1ef4d9daa73 является уникальной,
и для каждого пользователя эта папка может иметь своё название.

Добрый день.
Зачем вам Environment? Это большой класс с множеством методов и свойств.
Ищите саму папку C:\Users\<имя пользователя>\Documents\My Games\Rainbow Six - Siege\
(СкопированоPath.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "My Games\\Rainbow Six - Siege")) потом находите в ней все папки и путем перебора находите в какой из них есть файл СкопированоGameSettings.ini. Это первое, что пришло в голову. Возможно это еще как-то иначе можно найти.

Лайкнул Slava
Slava
Цитата: Adler от 19.03.2023, 23:07

Добрый день.
Зачем вам Environment? Это большой класс с множеством методов и свойств.
Ищите саму папку C:\Users\<имя пользователя>\Documents\My Games\Rainbow Six - Siege\
(СкопированоPath.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "My Games\\Rainbow Six - Siege")) потом находите в ней все папки и путем перебора находите в какой из них есть файл СкопированоGameSettings.ini. Это первое, что пришло в голову. Возможно это еще как-то иначе можно найти.

Благодарю, есть нюанс. В папке СкопированоRainbow Six - Siege находятся папка(и) в которых находятся ini-файл, который мне и нужен. Эти папки создаются автоматически под каждую учётную запись и соответственно имеют уникальное название.

Upd в основном там одна папка, т.к обычно в игру на компьютере заходят с одного аккаунта. Ещё раз спасибо ❤️
Пойду посмотрю как использовать СкопированоPath

Привет, Я бы сделал так:

Спойлер

string[] directories;

try {
    directories = Directory.GetDirectories(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"My Games\Rainbow Six - Siege"));
}
catch {
    MessageBox.Show("Game not found");
    return;
}

foreach (string dir in directories) {

    if (File.Exists(dir + "\\GameSettings.ini")) {

        // some code
        break;
    }
}

 

Лайкнул Slava
Slava

yuri,Adler, Спасибо👍 Я разобрался как это работает

Лайкнул yuri
yuri