begin process at 2012 02 10 20:13:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

partage à distance


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

partage à distance

mercredi 25 février 2004 à 16:38:00 | partage à distance

myocean

quelqu'un sait-il se servir de NetShareAdd car j'ai tjs l'erreur 53 en code de retour
ma fct :


mafctCreerPartage(LPSTR pPoste, LPSTR pCheminPartage, LPSTR pNomPartage, LPSTR pErreur)
NET_API_STATUS nStatus = 0;
SHARE_INFO_2 shareinfo;
DWORD dwErrArg;


strcpy(pErreur, "");

shareinfo.shi2_netname = pNomPartage;
shareinfo.shi2_type = STYPE_DISKTREE;
shareinfo.shi2_remark = TEXT("Test");
shareinfo.shi2_permissions = ACCESS_ALL;
shareinfo.shi2_max_uses = (unsigned long)(-1);
shareinfo.shi2_current_uses = 0;
shareinfo.shi2_path = pCheminPartage;
shareinfo.shi2_passwd = NULL;

nStatus = NetShareAdd(pPoste, 2, (unsigned char *)(&shareinfo), &dwErrArg);

if(nStatus == NERR_Success)
{
// Le partage a echoue
return 0;
}
else
{
// Erreur
return 1;
}// fin if
}
jeudi 26 février 2004 à 16:00:56 | Re : partage à distance

myocean

un peu d'aide svp
merci
jeudi 26 février 2004 à 16:46:44 | Re : partage à distance

myocean

c'est la crise car dans la structure SHARE_INFO_2 sur MSDN on a des format LPWSTR
alors que dans le code quand on recherche la définition de la structure SHARE_INFO_2 on a des format LPTSTR
alors pour les convertion ANSI -> UNICODE c'est la galère

il me faut de l'aide please
jeudi 4 mars 2004 à 15:52:13 | Re : partage à distance

kolph

Bonjour,

Voici une façon de convertir la variable pPoste et les champs shi2_netname et shi2_path.



char wideCharPoste[256];
if ( pPoste != NULL )
MultiByteToWideChar( CP_ACP , 0 , pPoste , strlen( pPoste ) + 1 , (LPWSTR) wideCharPoste , 256 );

char wideCharCheminPartage[256];
if ( pCheminPartage != NULL )
MultiByteToWideChar( CP_ACP , 0 , pCheminPartage , strlen( pCheminPartage ) + 1 , (LPWSTR) wideCharCheminPartage , 256 );

char wideCharNomPartage[256];
if ( pNomPartage != NULL )
MultiByteToWideChar( CP_ACP , 0 , pNomPartage , strlen( pNomPartage ) + 1 , (LPWSTR) wideCharNomPartage , 256 );


shareinfo.shi2_netname = wideCharNomPartage;
shareinfo.shi2_type = STYPE_DISKTREE;
shareinfo.shi2_remark = TEXT("Test");
shareinfo.shi2_permissions = ACCESS_ALL;
shareinfo.shi2_max_uses = (unsigned long)(-1);
shareinfo.shi2_current_uses = 0;
shareinfo.shi2_path = wideCharCheminPartage;
shareinfo.shi2_passwd = NULL;


Puis appel de la fonction :

nStatus = NetShareAdd( wideCharPoste , 2, (unsigned char *)(&shareinfo), &dwErrArg);




Kolph
jeudi 4 mars 2004 à 16:01:47 | Re : partage à distance

myocean

C'est bon ma fonction marche et je la mets pour ceux à qui ça peut servir :



//fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
//fff CreerPartage fff
//fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
// Creation d'un partage sur un poste distant
// MSDN help
// NetShareAdd : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netshareadd.asp
DECLSPEC BOOL WINAPI CreerPartage(LPSTR pPoste, LPSTR pCheminPartage, LPSTR pNomPartage, LPSTR pCommentairePartage, LPSTR pErreur)
{
NET_API_STATUS nStatus = 0;
SHARE_INFO_2 shareinfo;
DWORD dwErrArg;

strcpy(pErreur, "");

if(!pPoste || !pCheminPartage || !pNomPartage || !pCommentairePartage)
{
return 1;
}// fin if

if(strncmp(pPoste, "\\\\",2) != 0)
{
return 1;
}// fin if

shareinfo.shi2_path = AsWideString(pCheminPartage);
shareinfo.shi2_netname = AsWideString(pNomPartage);
shareinfo.shi2_remark = AsWideString(pCommentairePartage);

shareinfo.shi2_type = STYPE_DISKTREE;
shareinfo.shi2_permissions = ACCESS_ALL;
shareinfo.shi2_max_uses = (unsigned long)(-1);
shareinfo.shi2_current_uses = 0;
shareinfo.shi2_passwd = NULL;

nStatus = NetShareAdd(AsWideString(pPoste), 2, (unsigned char *)(&shareinfo), &dwErrArg);

if(nStatus == NERR_Success)
{
// Le partage cree
return 0;
}
else
{
// Erreur
return 1;
}// fin if
}// fin fonction CreerPartage

//fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
//fff AsWideString fff
//fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
// Converti AINSI en UNICODE
static char* AsWideString(const char* cszANSIstring)
{
int nBufSize = 0;

if( cszANSIstring == NULL )
{
return NULL;
}// fin if

nBufSize = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, cszANSIstring, -1, NULL, 0);
WCHAR* wideString = new WCHAR[nBufSize+1];
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, cszANSIstring, -1, wideString, nBufSize);

return reinterpret_cast<char*>(wideString);
}// fin fonction AsWideString


Mais est-il possible de créer un dossier sur un poste à distance pour ensuite le partager et y a t'il un moyen de faire correspondre les droits UNIX à ceux de NT (pour un contrôle total)?
jeudi 4 mars 2004 à 16:23:12 | Re : partage à distance

kolph

Merci CWiCnetExample pour AsWideString(...) !!!

Pour créer un dossier à distance, il faut déjà avoir les droits (je sais, c'est évident, mais il est toujours préférable de le rappeler).

Si c'est à partir d'un dossier qu'on vient de partager (avec la fonction CreerPartage(...)), pourquoi ne pas alors mapper ce dossier puis utiliser _mkdir?

Kolph
jeudi 4 mars 2004 à 16:38:48 | Re : partage à distance

myocean

Non je doit créer un dossier sur un poste puis le partager sans qu'il ai un sous-dossier déjà partagé !

Sinon je sais plus où j'ai trouvé ''AsWideString'', mais j'avoue elle n'est pas de moi, en tout cas elle est bien pratique !
mercredi 14 avril 2004 à 22:55:20 | Re : partage à distance

sam2004

salut amis, j'ai travailler sur les api de netapi32.dll mais tjr j'ai eu lepb de cree un partage et j'ai même pose la question sur ce forum avec un code en mode console, losque vous le compiler pas erreur et il s'execute mais pas de résultat le (repertoire n'est pas partagé)
le code:
//---------------------------------
#include <winsock2.h>
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include <malloc.h>
#include <lmerr.h>
#include <conio.h>

#define STYPE_DISKTREE 0
#define STYPE_PRINTQ 1
#define STYPE_DEVICE 2

#define ACCESS_READ 0

#define MAX_USES -1
#define COURRANT_USES 0


typedef DWORD (__stdcall *NetShareAddNT_t)(
wchar_t *servername,
DWORD level,
byte **buf,
DWORD parm_err);

typedef struct _SHARE_INFO_2_NT {
wchar_t * shi2_netname;
DWORD shi2_type;
wchar_t * shi2_remark;
DWORD shi2_permissions;
DWORD shi2_max_uses;
DWORD shi2_current_uses;
wchar_t * shi2_path;
wchar_t * shi2_passwd;
} SHARE_INFO_2_NT, *PSHARE_INFO_2_NT, *LPSHARE_INFO_2_NT;

void main()
{
DWORD dwlevel=2,c=0,a=5;
PSHARE_INFO_2_NT buff,p;
buff = new (_SHARE_INFO_2_NT);
char str2[256];
strcpy(str2, "Essai");
WCHAR hst2[20];
MultiByteToWideChar( CP_ACP, 0, str2, strlen(str2)+1, hst2, sizeof(hst2)/sizeof(hst2[0]));

char str3[256];
strcpy(str3, "D:\DINE");
WCHAR hst3[20];
MultiByteToWideChar( CP_ACP, 0, str3, strlen(str3)+1, hst3, sizeof(hst3)/sizeof(hst3[0]));
//-----------------
buff->shi2_current_uses=COURRANT_USES;
buff->shi2_max_uses=MAX_USES;
buff->shi2_netname=hst2;
buff->shi2_path=hst3;
buff->shi2_permissions=ACCESS_READ;
buff->shi2_type=STYPE_DISKTREE;

printf("\ntype de partage :: %d",buff->shi2_type);
printf("\npermission :: %d",buff->shi2_permissions);
printf("\nmax users :: %d",buff->shi2_max_uses);
printf("\ncourranr users :: %d",buff->shi2_current_uses);

//printf("\nremarque :: %s",buff->shi2_remark);
//printf("\nmotpasse :: %s",buff->shi2_passwd);
printf("\nrepertoire de partage :: %s",buff->shi2_path);
printf("\nnom de partage ::%s",buff->shi2_netname);

p=buff;
//-----------------
DWORD res=NULL;
HINSTANCE hNet = 0;
hNet = LoadLibrary( "netapi32.dll" );

NetShareAddNT_t NetShareAddNT = 0;

NetShareAddNT = (NetShareAddNT_t) GetProcAddress( hNet, "NetShareAdd" );
if ( NetShareAddNT == 0 )
{
printf("erreur !!! \n");
}

char str1[256];
strcpy(str1, "\\\\");
strcat(str1, "172.167.0.39");
WCHAR hst1[20];
MultiByteToWideChar( CP_ACP, 0, str1, strlen(str1)+1, hst1, sizeof(hst1)/sizeof(hst1[0]));

res=NetShareAddNT(hst1,dwlevel,(LPBYTE *)&p,NULL);

//erreur type
if(res==ERROR_ACCESS_DENIED) printf("1\n");
if(res==ERROR_INVALID_LEVEL) printf("2\n");
if(res==ERROR_INVALID_NAME) printf("3\n");
if(res==ERROR_INVALID_PARAMETER) printf("4\n");
if(res==NERR_DuplicateShare) printf("5\n");
if(res==NERR_RedirectedPath) printf("6\n");
if(res==NERR_UnknownDevDir) printf("7\n");
else
printf("????????????");
getch();
}
//------------------------------------------------

Aussi jai utuiliser votre fonction mais pas de résultats cette fonction ne génére pas erreur mais pas de resultat
je pose la question: est ce que vous avez verifier que cette fonction a bien partagé le fichier mis en in put?
si oui donné mois un exemple comment vous avez enter vos parametres exemple.

2. question: si vous avez programmez l'api NetShareEnum et vous avez specifier le buffer _INFOS_SHARE_2 avez vous recuper les permissions des fichiers partagés?
car moi j'ai partagé par exemple des fichier mode ecriture et autre mode lucture et mode creation et losque je l'execute elle me donne tjr privilège 0(acces_noone).
avez vous ce pb?
sinon expliquez moi comment vous avez fait?
le systeme d'exploitation utiliser Win2000 et langage VC++.
merci BC et A++++ votre amis samir.
mardi 6 juin 2006 à 16:25:17 | Re : partage à distance

redam2005

Salut, Je ne sais pas si tu as finalement réussi ce que tu essayais de faire mais j'ai le même problème. A savoir : je n'ai pas de difficultés pour partager un dossier sur le reseau mais j'ai des problèmes pour le créer. KOLPH a dit : Pour créer un dossier à distance, il faut déjà avoir les droits (je sais, c'est évident, mais il est toujours préférable de le rappeler). _Pas si évident car le dossier dans lequel je veux créer un dossier partagé m'est inaccessible par l'explorer. Par contre, en utilisant le 'Computer Manager' de windows, lorsque je crée le partage et que le dossier n'existe pas, il me propose de le créer. Chose que ne fait pas la fonction 'NetShareAddNT'. Enfin, si quelqu'un a une réponse pour savoir comment créer un dossier sur le reseau autrement qu'avec un mkdir, avec une dll, ça m'interesse. Merci


Cette discussion est classée dans : code, partage, shareinfo, shi2, lpstr


Répondre à ce message

Sujets en rapport avec ce message

Pb de converstion.... [ par sran_isback ] Salut! Je voudrais convertir des int que je récup (500, 1500 etc...) en LPSTR, et itoa et sprintf me font planté le prg(j'utilise vs 2005) comment pu Recherche documentation Code Composer Studio + DSP Texas [ par Houbaa ] Bonjour, je suis à la recherche d'informations sur la programmation des DSP Texas Instruments à l'aide de Code Composer Studio. Plus précisément Integration.. [ par gdpasmini ] Hello, j'ai un petit probleme. je cherche a faire un logiciel destiné a comporter une IHM. Ce logiciel comporte un module permettant d'effectuer diff Suvez ma vie d'etudient... [ par kateonoc ] // Spell.cpp : Defines the class behaviors for the application. // #include "stdafx.h" #include "Spell.h" #include "SpellDlg.h" #ifdef _DEBUG #defin svp sauvez moi!!!!!!! par le code en c de calcul de l'integral approché [ par imanet ] svp je cherche un code en c qui calcul l'integral approché d'une fonction.svp repandez moi le plus vite possible:imanet_5@hotmail.com Cherche indenteur de code [ par Spoolega ] BonjourBien content d'avoir fini un projet pour les cours, je dois rendre le code source imprimé dans le dossier... mais celui ci (bien que tout à fai portion de code que je pige pas [ par neophenix83 ] Bonjour,dans un code que j'ai recupéré, je trouve:#define sleep(x) Sleep(x*1000)Je ne pige pas bien...sleep(x) ? code d'accés [ par salim_samir ] salut à tous j'ai réaliser un programme sous microcontroleur 68HC811E2 qui est commander par une clavier 12 touches, et je veut protéger ce programme XDIALOG [ par sy3ns ] salut bon jai fait entierement mon projet en c et javer lintention dutiliser un toolkit graphique comme dialog mais le probleme cest que je sais pas i registre probleme creation de cle [ par tucco ] #include "stdafx.h" #include "windows.h" nt APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales