¿Hay una API en Windows similar a la de chown de Linux?Cambiar el propietario del archivo en Windows
5
A
Respuesta
3
Tomado de aquí: http://www.perlmonks.org/?node_id=70562
// #includes omitted for the sake of sanity
HANDLE token;
char *filename = "somefile.txt";
char *newuser = "someuser";
DWORD len;
PSECURITY_DESCRIPTOR security = NULL;
PSID sidPtr = NULL;
int retValue = 1;
// Get the privileges you need
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) {
SetPrivilege(token, "SeTakeOwnershipPrivilege", 1);
SetPrivilege(token, "SeSecurityPrivilege", 1);
SetPrivilege(token, "SeBackupPrivilege", 1);
SetPrivilege(token, "SeRestorePrivilege", 1);
} else retValue = 0;
// Create the security descriptor
if (retValue) {
GetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security, 0, &len);
security = (PSECURITY_DESCRIPTOR)malloc(len);
if (!InitializeSecurityDescriptor(security, SECURITY_DESCRIPTOR_REVISION))
retValue = 0;
}
// Get the sid for the username
if (retValue) {
char domainbuf[4096];
DWORD sidSize = 0;
DWORD bufSize = 4096;
SID_NAME_USE sidUse;
LookupAccountName(NULL, newuser, sidPtr, &sidSize, domainbuf, &bufSize, &sidUse);
sid = (PSID)malloc(sidSize);
if (!LookupAccountName(NULL, string, (PSID)sid, &sidSize, domainbuf, &bufSize, &sidUse))
retValue = 0;
}
}
// Set the sid to be the new owner
if (retValue && !SetSecurityDescriptorOwner(security, sidPtr, 0))
retValue = 0;
// Save the security descriptor
if (retValue)
retValue = SetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security);
if (security) free(security);
if (sid) free(sid);
return retValue;
`
+3
¡Santo infierno, todo eso para reemplazar una simple llamada 'chown'! –
+0
¿Omitió el tipo de devolución de función, nombre y parámetros por el bien de vaguery? –
1
Usted puede encontrar el cacls or icacls commands útil ... No son exactamente fácil de usar, aunque
¿Puede dar un poco más de información en lo que estás tratando de hacer?
Cuestiones relacionadas
- 1. Icono del propietario del archivo
- 2. Comprobando los permisos del propietario del archivo
- 3. Conexión del propietario del archivo para ver el problema
- 4. Obteniendo/configurando el propietario del archivo en C#
- 5. Cómo cambiar el propietario de una rsync
- 6. Acerca del propietario y ventana de propiedad en Windows
- 7. Ver salida no disponible para el propietario del archivo
- 8. Xcode 4 Interface Builder: Cómo establecer el propietario del archivo
- 9. Cambiar el propietario de un proceso existente en Linux
- 10. ¿Cambiar el nombre del archivo en Cocoa?
- 11. Cómo cambiar el propietario de una ventana usando su identificador
- 12. Encuentra Ficha del propietario/creador en C#
- 13. ¿Cómo obtener el nombre del propietario del archivo en Linux usando C++?
- 14. Buscar el propietario de un archivo en Unix
- 15. ¿Qué color usar en el fondo de control de lista de Windows del propietario?
- 16. ¿Cómo cambiar el propietario de la base de datos PostgreSql?
- 17. ¿Qué es el propietario del archivo y el primer respondedor en iPhone SDK - xCode?
- 18. ¿Cómo utilizar el id <protocol> para el propietario del archivo en Interface Builder?
- 19. ¿Hay alguna manera de cambiar el propietario de un JDialog?
- 20. Cambiar el color del texto del shell (Windows)
- 21. Portapapeles Java ¿Propósito del propietario?
- 22. ¿Cómo obtengo el nombre del propietario de un archivo en Java en OSX?
- 23. El concepto de propietario del archivo, primero en responder, y delegado aplicación en iPhone
- 24. Cambiar el ícono del archivo .exe producido, py2exe
- 25. ¿Por qué no puedo conectar el propietario del archivo a nuevas vistas en iOS SDK?
- 26. Obtener propietario del menú de contexto en el código
- 27. Cómo establecer el propietario del directorio en% de archivos?
- 28. ¿Cambiar la caja de un archivo en Windows?
- 29. cambiar la codificación del archivo
- 30. ¿Cuál es la necesidad del propietario de File en xcode xib files? ¿Puedo hacer las mismas cosas sin el propietario del archivo?
El modelo de seguridad de Windows no se basa realmente en la propiedad del archivo de la misma manera que los sistemas de archivos UNIX, por lo que esta no es realmente una herramienta que se necesita con mucha frecuencia. –