Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2012
gamerwin gamerwin is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 2
Poder: 0
gamerwin Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 09-04-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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.
Responder Con Cita
  #3  
Antiguo 09-04-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
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.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #4  
Antiguo 10-04-2012
gamerwin gamerwin is offline
Registrado
NULL
 
Registrado: abr 2012
Posts: 2
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Acceder a carpeta compartida en servidor Linux Faust Linux 19 05-01-2009 05:03:12
Como darle permisos a usuarios a una carpeta compartida desde delphi Bracus API de Windows 7 07-05-2008 21:39:44
carpeta compartida Genner Varios 3 04-07-2006 20:57:45
Obtener la ruta real de una carpeta compartida en mi ordenador Javi2 API de Windows 0 14-07-2004 11:17:12
Como averiguar la ruta real de una carpeta compartida? Javi2 Varios 0 09-07-2004 11:36:04


La franja horaria es GMT +2. Ahora son las 19:20:39.


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
Copyright 1996-2007 Club Delphi