Всем привет. Нужно узнать SID пользователя, в таком виде S-1-5-21-2303912444-598105561-2700407050-1001
И произвести замену в файле desktop.xml слова "mySID" на SID который узнали.
Получаю SID текущего пользователя.
string strUser = System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString();
Как заменить слово "C-han-ge-me" в фале desktop.xml этим значением.
<Principals> <Principal id="Author"> <UserId>C-han-ge-me</UserId> <LogonType>InteractiveToken</LogonType> <RunLevel>LeastPrivilege</RunLevel> </Principal> </Principals>
Вариантов несколько
Если файл очень маленький, то самый простой вариант это вот так:
using System.IO;
string fileName = "XMLFile1.xml";
string userId = System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString();
string fileContent = File.ReadAllText("XMLFile1.xml");
File.WriteAllText(fileName, fileContent.Replace("C-han-ge-me", userId));
Второй вариант подойдет для смены нужного элемента в сложном документе (использование LINQ to XML)
using System.Linq;
using System.Xml.Linq;
string fileName = "XMLFile1.xml";
string userId = System.Security.Principal.WindowsIdentity.GetCurrent().User.ToString();
var doc = XElement.Load(fileName);
var userIdElement = doc
.Descendants("UserId")
.Where(e => e.Value == "C-han-ge-me")
.Single();
userIdElement.Value = userId;
doc.Save(fileName);
Для очень больших документов для лучшей производительности лучше использовать XPath или XmlWriter/XmlReader
Как строить XPath выражения
Как использовать XPath в C#
Есть хорошие видео уроки от Александра Шевчука по работе с XML где есть основы использования перечисленного выше