W Windows Vista właścicielem (Owner) wszystkich plików systemowych jest konto o nazwie TrustedInstaller… a chce zmienić nazwę plikom oraz podmienić pliki w katalogu systemowym z poziomu swojej aplikacji C#/C++ lecz wywala mi odmowa dostępu… nie mam uprawnień…
Więc jak nadać te prawa?
Wiem, że jakoś poprzez System.IO.File.GetAccessControl(); i System.IO.File.SetAccessControl(); ale nie wiem za bardzo jak się to tego zabrać… macie jakiś przykład kodu czy coś?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace podmianaplikoworaznazw
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
System.IO.File.Copy("C:\\Windows\wp.PNG", "F:\\wp2.PNG");
}
}
}
Twój kod będzie działał tak jak działa jeśli zostanie wykonany z odpowiednimi uprawnieniami. Mówiąc prościej - musi zostać uruchomiony z uprawnieniami administratora. SetAccessControl nic tutaj nie da, bo do zmiany ACLs zasobu potrzeba najpierw uzyskać do niego dostęp na odpowiednim poziomie.
Z ciekawości: po co chcesz modyfikować pliki systemowe? Nazywają się “systemowe” nie bez powodu…
Cierpliwy czy nie - ciekaw jestem, bo z doświadczenia wynika, że nic dobrego z tego nie wyniknie. Te pliki naprawdę nie bez powodu są systemowe. Twoje zmiany mogą mieć wpływ na działanie programów do backupu i defraga. Mówiąc wprost: mogą zabić komputer po uruchomieniu tychże. Dzieląc się tym co zamierzasz zrobić możesz uchronić się przed konsekwencjami używania Twojej aplikacji.