Accueil > Forum > > > > partage à distance
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
|
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,
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|