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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|