Ver Mensaje Individual
  #4  
Antiguo 10-04-2012
gamerwin gamerwin is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 2
Reputación: 0
gamerwin Va por buen camino
Cita:
Empezado por gamerwin Ver Mensaje
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

Última edición por Casimiro Notevi fecha: 10-04-2012 a las 14:53:50.
Responder Con Cita