Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   como Cambiar propietario de Carpeta local o compartida (https://www.clubdelphi.com/foros/showthread.php?t=78319)

gamerwin 09-04-2012 00:35:39

como Cambiar propietario de Carpeta local o compartida
 
Hola a todos, soy nuevo en esto de la programación en pascal, utilizando algunas rutinas que hay en la red, he logrado crear una carpeta compartida…

NetShareAddWinNT := GetProcAddress(hDll, 'NetShareAdd');
tamano := sizeof(si2);
FillChar(si2, tamano, 0);
si2.shi2_netname := NomCar;
si2.shi2_type := STYPE_DISKTREE;
si2.shi2_permissions := TipAcceso;
si2.shi2_max_uses := 4294967295;
si2.shi2_current_uses := 20;
si2.shi2_path := RutaCar;
res := NetShareAddWinNT(nil, 502, @si2, err);
FreeLibrary(hDll);
SetFileAttributes(PChar(RutaCar), 5);

Pero esta se crea con el grupo o usuario en el que ejecuto la aplicación, al querer acceder de otra unidad mediante la red, me manda el mensaje “que no tengo los permisos necesarios para esta carpeta”, creo el usuario en la unidad y puedo entrar.

Mis preguntas son:
1.- Se puede crear la carpeta con un usuario/grupo específico de inicio?
2.- Existe alguna manera de cambiar o agregar un usuario/grupo especifico, a una carpeta ya existente?

De antemano muchas gracias por su aporte.

Casimiro Notevi 09-04-2012 01:37:12

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Recuerda usa las etiquetas para el código, ejemplo:


También debes tener cuidado en qué foro pones tus preguntas.

Y repito, bienvenido a clubdelphi.

mightydragonlor 09-04-2012 04:40:17

posible si es, pero deberás usar básicamente 2 técnicas:
1-Llamar a pas api's de S.O.
2-Hacer un .Bat que lo ejecutes mediante la aplicación.

gamerwin 10-04-2012 02:24:25

Cita:

Empezado por gamerwin (Mensaje 429573)
Hola a todos, soy nuevo en esto de la programación en pascal, utilizando algunas rutinas que hay en la red, he logrado crear una carpeta compartida…


Código Delphi [-]
NetShareAddWinNT := GetProcAddress(hDll, 'NetShareAdd');
tamano := sizeof(si2);
FillChar(si2, tamano, 0);
si2.shi2_netname := NomCar;
si2.shi2_type := STYPE_DISKTREE;
si2.shi2_permissions := TipAcceso;
si2.shi2_max_uses := 4294967295;
si2.shi2_current_uses := 20;
si2.shi2_path := RutaCar;
res := NetShareAddWinNT(nil, 502, @si2, err);
FreeLibrary(hDll);
SetFileAttributes(PChar(RutaCar), 5);

Pero esta se crea con el grupo o usuario en el que ejecuto la aplicación, al querer acceder de otra unidad mediante la red, me manda el mensaje “que no tengo los permisos necesarios para esta carpeta”, creo el usuario en la unidad y puedo entrar.

Mis preguntas son:
1.- Se puede crear la carpeta con un usuario/grupo específico de inicio?
2.- Existe alguna manera de cambiar o agregar un usuario/grupo especifico, a una carpeta ya existente?

De antemano muchas gracias por su aporte.

Gracias a todos lo que prestaron ayuda, encontre la solucion de una manera rapida...

se genera la carpeta con el propietario deseado, con la siguiente rutina

Código:

// Set read access for Everyone.
ea[0].grfAccessPermissions = GENERIC_READ;
ea[0].grfAccessMode = SET_ACCESS;
ea[0].grfInheritance = NO_INHERITANCE;
ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID;
ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
ea[0].Trustee.ptstrName = (LPTSTR) pSIDEveryone;
// Set full control for Administrators.
ea[1].grfAccessPermissions = GENERIC_ALL;
ea[1].grfAccessMode = SET_ACCESS;
ea[1].grfInheritance = NO_INHERITANCE;
ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID;
ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP;
ea[1].Trustee.ptstrName = (LPTSTR) pSIDAdmin;
if (ERROR_SUCCESS != SetEntriesInAcl(NUM_ACES,
ea,
NULL,
&pACL))
{
printf("Failed SetEntriesInAcl\n");
goto Cleanup;
}

y se comparte con la rutina anterior.

espero le sirva los que como yo vamos empezando


La franja horaria es GMT +2. Ahora son las 04:11:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi