Antes de sacar el resto de mi cabello me gustaría obtener alguna información sobre esto.
Estoy tratando de tomar posesión de una carpeta. Estoy ejecutando el programa como administrador, por supuesto, y tengo derechos para tomar posesión ya que puedo cambiar el propietario en el explorador.Tomar posesión de un archivo o carpeta
Sin embargo, puedo cambiar el propietario si el administrador o mi cuenta es el propietario, y puedo cambiar los permisos si ya tengo la propiedad.
Si intento darme la propiedad de un archivo, digamos que es propiedad de SYSTEM, entonces obtengo una excepción no autorizada.
He intentado algunas cosas diferentes con los métodos de control de acceso pero nada funciona, este último método creo que es directamente por el libro.
private static void makePerm(string file, NTAccount account)
{
FileInfo finfo = new FileInfo(file);
FileSecurity fsecurity = finfo.GetAccessControl();
//also tried it like this //fsecurity.ResetAccessRule(new FileSystemAccessRule(string.Format(@"{0}\{1}", Environment.UserDomainName.ToString(), Environment.UserDomainName.ToString()), FileSystemRights.FullControl, AccessControlType.Allow));
fsecurity.SetOwner(account);
finfo.SetAccessControl(fsecurity);
}
Estoy intentando esto en Windows 7 por cierto.
¿Qué me falta aquí?
Lo que parece que falta es que el sistema de administración y se supera. –
¿Está seguro de que puede tomar posesión de Explorer en un archivo propiedad del sistema? Pareces decir eso pero demasiado explícito. –
Sí, lo sé, pero ¿por qué puedo cambiar el propietario del sistema a administrador en el explorador, pero no con el código? El administrador de AFAIK siempre puede hacerse cargo de cualquier cosa. –