Нужна альтернатива для чтения ini-файлов (проблемы с kernel32-решением)
Я читаю INI-файл, используя Kernel32-решение (GetPrivateProfileString). Он работал нормально под XP, но теперь он (не) работает под Windows-7. Теперь у меня есть проблема, что Windows7 защищает файл, и я не могу записать в него (с другой программой). Как только я открываю ini-файл с kernel32, он блокируется навсегда, пока я не закрою программу. Есть ли какой-нибудь параметр для простого чтения файла без его защиты от записи? Или какие-то другие решения по чтению INI-файла? Я использую C# 2010 Express
Спасибо за помощь
Редактировать: Тем временем я пытался скопировать исходный INI-файл во второй файл, а затем я только читаю скопированный INI-файл с функциями ядра 32. Но теперь кажется, что простая команда копирования System.IO.File.Copy(PathOriginal, lokalPath, true); блокирует исходный файл для другой программы после его копирования.
Так что моя проблема сейчас не в ini-файле. Это защита файлов в целом под Windows 7.
Есть ли хитрость, чтобы "освободить" дескриптор файла в Windows 7?
2 ответа
Попробуйте Nini, которая является на 100% C# версией (не требуется DLL/PInvoke). Также есть пакет NuGet.
Пример INI-файла:
[Cars]
model = Toyota
year = 2012
Код C#:
Nini.Ini.IniDocument doc = new Nini.Ini.IniDocument ("configuration.ini");
Console.WriteLine ("Model: " + doc.Get("Cars", "model"));
Console.WriteLine ("Year: " + doc.GetInt("Cars", "year"));
Проверьте эту библиотеку IniReader. Это может помочь вам с вашей проблемой: