Код: Выделить всё
using System.Diagnostics; //VS22 automatically added this reference during one of my attempts to make this work but I can't remember which it was used for, might not be necessary
class Program
{
static string gameAddress = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\AppData\LocalLow\Owlcat Games"; //... more specific environment locations, just an example
static string Locale = "";
static string Storage = @"C:\Program Files\FileManager";
void Main()
{
if (File.Exists(Storage))
{
Console.WriteLine("True");
} else
{
Console.WriteLine("False");
try
{
Directory.CreateDirectory(Storage);
} catch (Exception ex) { Console.WriteLine(ex); }
}
Console.WriteLine("check 1")
FileFetch();
Console.WriteLine("check 2")
}
public static async void FileFetch() //async for the future; checking available files during startup
{
int errorPos = 0;
try
{
string[] files = Directory.GetDirectories(gameAddress, "", SearchOption.AllDirectories);
foreach (string file in files)
{
Console.WriteLine(file);
Locale = file; //just grabbing something to see if I can edit it
}
errorPos++;
}
catch (Exception ex)
{
Console.WriteLine("1: " + ex);
}
try
{
string tmpFile = @"C:\tmp\testFile";
if (!File.Exists(tmpFile))
{
File.Create(tmpFile);
}
errorPos++;
string source = @"C:\Users\peppe\AppData\LocalLow\Owlcat Games\Warhammer 40000 Rogue Trader\Saved Games\Auto_1.zks";
// try to copy a file from here?
File.Copy(source, tmpFile, true);
Console.WriteLine("Check 3");
File.Copy(tmpFile, @"C:\Users\peppe\AppData\LocalLow\Owlcat Games\Warhammer 40000 Rogue Trader\Saved Games\Auto_2.zks", true); // res should be 2435kb instead of 2185kb
Console.WriteLine("Success!");
Process.Start("explorer.exe", @"C:\Users\peppe\AppData\LocalLow\Owlcat Games\Warhammer 40000 Rogue Trader\Saved Games");
//This worked, so now im really confused
} catch (Exception ex)
{
Console.WriteLine(errorPos + " " + ex);
}
}
}
Изменить: Как отметил Фрокс, ошибка может быть вызвана тем, что Filestream пытается прочитать папку вместо реального файла; Я переключил свой код на использование Directory.GetDirectories(); чтобы достичь того, что я изначально пытался протестировать с помощью StreamReader, но мне все еще выдается исключение UnauthorizedAccessException при попытке манипулировать или даже создавать определенные файлы, поэтому разрешение разрешений все равно будет оценено. Протестировал Directory.CreateDirectory() на несколько уровней на моем рабочем столе, проблем не возникло, но создание внутри определенных папок, созданных Steam, и даже C:\Program Files\ вызывает ошибку.
Редактировать 2: Написал кое-что, чтобы вручную проверить, могу ли я копировать в определенные глубокие файлы и из них, и это работало отлично, но я все еще получаю ошибку при попытке создать папку в C:\Program Files, метод CreateDirectory работал как задумано при записи в рабочий стол.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ata-folder
Мобильная версия