Avatar billede cautoo Nybegynder
22. marts 2001 - 13:16 Der er 61 kommentarer og
1 løsning

Deling

Hvordan laver man en delphi kommando som deler en mappe mappe til netværk?
Avatar billede borrisholt Novice
22. marts 2001 - 13:28 #1
NetshareAdd

Jens B
Avatar billede cautoo Nybegynder
22. marts 2001 - 13:31 #2
hvordan virker det??
Avatar billede martinlind Nybegynder
22. marts 2001 - 13:32 #3
prøv at skrive NetShareAdd, og stil din cursor ovenpå, tryk derefter på F1.

( Online hjælp er en god ting )
Avatar billede ziron Nybegynder
22. marts 2001 - 13:34 #4
borrisholt >> netshareadd virker da ikke bare lige, det er jo noget netapi....

/ZIRON
Avatar billede martinlind Nybegynder
22. marts 2001 - 13:35 #5
og så....

API kald er ikke noget specielt svært i delhpi
Avatar billede cautoo Nybegynder
22. marts 2001 - 13:36 #6
kan jeg ikke få et lille eks.
Avatar billede wisen Nybegynder
22. marts 2001 - 13:36 #7
Hvad så med en shellexecute hvor man bruger \"net\" programmet :)
Avatar billede cautoo Nybegynder
22. marts 2001 - 13:37 #8
og det skal virke i win98
Avatar billede ziron Nybegynder
22. marts 2001 - 13:40 #9
wisen >> det kunne man da også, du må heller lave et eks. det lyder som om han gerne vil have det. men for 5 point...

/ZIRON
Avatar billede wisen Nybegynder
22. marts 2001 - 13:42 #10
hehe. Ja 5 point er jo ikke meget, og det var mest ment som et spøg :) Til gengæld er shellexecute da nem at bruge...
Avatar billede borrisholt Novice
22. marts 2001 - 13:43 #11
FRA MSDN :

/*++

Copyright (c) 1995, 1996  Microsoft Corporation

Module Name:

    netshare.c

Abstract:

    This module illustrates how to use the Windows NT Lan Manager API
    in conjunction with the Win32 security API to create a new share
    on an arbitrary machine with permissions that grant an arbitrary
    user/group Full Access to the share.

Author:

    Scott Field (sfield)    01-Oct-95

--*/

#include <windows.h>
#include <lm.h>
#include <stdio.h>

#define RTN_OK 0
#define RTN_USAGE 1
#define RTN_ERROR 13

//
// Note: UNICODE entry point and argv.  This way, we don\'t need to bother
// with converting commandline args to Unicode
//

int
__cdecl
wmain(
    int argc,
    wchar_t *argv[]
    )
{
    LPWSTR DirectoryToShare;
    LPWSTR Sharename;
    LPWSTR Username;
    LPWSTR Server;

    PSID pSid = NULL;
    DWORD cbSid;

    WCHAR RefDomain[DNLEN + 1];
    DWORD cchDomain = DNLEN + 1;
    SID_NAME_USE peUse;

    SECURITY_DESCRIPTOR sd;
    PACL pDacl = NULL;
    DWORD dwAclSize;

    SHARE_INFO_502 si502;
    NET_API_STATUS nas;

    BOOL bSuccess = FALSE; // assume this function fails

    if(argc < 4) {
        printf(\"Usage: %ls <directory> <sharename> <user/group> [\\\\\\\\Server]\\n\", argv[0]);
        printf(\" directory is fullpath of directory to share\\n\");
        printf(\" sharename is name of share on server\\n\");
        printf(\" user/group is an WinNT user/groupname (REDMOND\\\\sfield, Administrators, etc)\\n\");
        printf(\" optional Server is the name of the computer to create the share on\\n\");
        printf(\"\\nExample: %ls c:\\\\public public Everyone\\n\", argv[0]);
        printf(\"c:\\\\public shared as public granting Everyone full access\\n\");
        printf(\"\\nExample: %ls c:\\\\private cool$ REDMOND\\\\sfield \\\\\\\\WINBASE\\n\", argv[0]);
        printf(\"c:\\\\private on \\\\\\\\WINBASE shared as cool$ (hidden) granting REDMOND\\\\sfield access\\n\");

        return RTN_USAGE;
    }

    //
    // since the commandline was Unicode, just provide pointers to
    // the relevant items
    //

    DirectoryToShare = argv[1];
    Sharename = argv[2];
    Username = argv[3];

    if( argc > 4 ) {
        Server = argv[4];
    } else {
        Server = NULL; // local machine
    }

    //
    // initial allocation attempt for Sid
    //
#define SID_SIZE 96
    cbSid = SID_SIZE;

    pSid = (PSID)HeapAlloc(GetProcessHeap(), 0, cbSid);
    if(pSid == NULL) {
        printf(\"HeapAlloc error!\\n\");
        return RTN_ERROR;
    }

    //
    // get the Sid associated with the supplied user/group name
    // force Unicode API since we always pass Unicode string
    //

    if(!LookupAccountNameW(
        NULL,      // default lookup logic
        Username,  // user/group of interest from commandline
        pSid,      // Sid buffer
        &cbSid,    // size of Sid
        RefDomain,  // Domain account found on (unused)
        &cchDomain, // size of domain in chars
        &peUse
        )) {

        //
        // if the buffer wasn\'t large enough, try again
        //

        if(GetLastError() == ERROR_INSUFFICIENT_BUFFER) {

            pSid = (PSID)HeapReAlloc(GetProcessHeap(), 0, pSid, cbSid);

            if(pSid == NULL) {
                printf(\"HeapReAlloc error!\\n\");
                goto cleanup;
            }

            cchDomain = DNLEN + 1;

            if(!LookupAccountNameW(
                NULL,      // default lookup logic
                Username,  // user/group of interest from commandline
                pSid,      // Sid buffer
                &cbSid,    // size of Sid
                RefDomain,  // Domain account found on (unused)
                &cchDomain, // size of domain in chars
                &peUse
                )) {
                    printf(\"LookupAccountName error! (rc=%lu)\\n\", GetLastError());
                    goto cleanup;
                }

        } else {
            printf(\"LookupAccountName error! (rc=%lu)\\n\", GetLastError());
            goto cleanup;
        }
    }

    //
    // compute size of new acl
    //

    dwAclSize = sizeof(ACL) +
        1 * ( sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD) ) +
        GetLengthSid(pSid) ;

    //
    // allocate storage for Acl
    //

    pDacl = (PACL)HeapAlloc(GetProcessHeap(), 0, dwAclSize);
    if(pDacl == NULL) goto cleanup;

    if(!InitializeAcl(pDacl, dwAclSize, ACL_REVISION))
        goto cleanup;

    //
    // grant GENERIC_ALL (Full Control) access
    //

    if(!AddAccessAllowedAce(
        pDacl,
        ACL_REVISION,
        GENERIC_ALL,
        pSid
        )) goto cleanup;

    if(!InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION))
        goto cleanup;

    if(!SetSecurityDescriptorDacl(&sd, TRUE, pDacl, FALSE)) {
        fprintf(stderr, \"SetSecurityDescriptorDacl error! (rc=%lu)\\n\",
            GetLastError());
        goto cleanup;
    }

    //
    // setup share info structure
    //

    si502.shi502_netname = (LPTSTR) Sharename;
    si502.shi502_type = STYPE_DISKTREE;
    si502.shi502_remark = NULL;
    si502.shi502_permissions = 0;
    si502.shi502_max_uses = SHI_USES_UNLIMITED;
    si502.shi502_current_uses = 0;
    si502.shi502_path = (LPTSTR) DirectoryToShare;
    si502.shi502_passwd = NULL;
    si502.shi502_reserved = 0;
    si502.shi502_security_descriptor = &sd;

    nas = NetShareAdd(
        (LPTSTR) Server,        // share is on local machine
        502,            // info-level
        (LPBYTE)&si502, // info-buffer
        NULL            // don\'t bother with parm
        );

    if(nas != NO_ERROR) {
        printf(\"NetShareAdd error! (rc=%lu)\\n\", nas);
        goto cleanup;
    }

    bSuccess = TRUE; // indicate success

cleanup:

    //
    // free allocated resources
    //
    if(pDacl != NULL)
        HeapFree(GetProcessHeap(), 0, pDacl);

    if(pSid != NULL)
        HeapFree(GetProcessHeap(), 0, pSid);

    if(!bSuccess) {
        return RTN_ERROR;
    }

    return RTN_OK;
}



Jens B
Avatar billede ziron Nybegynder
22. marts 2001 - 13:46 #12
det ser ud til at vi skal glemme vores shellexecute, Jens er lidt for syg med ham og hans MSDN....

vi må heller glemme de 5 point og lade jens få dem...

/ZIRON
Avatar billede wisen Nybegynder
22. marts 2001 - 13:50 #13
Øhh, Borrisholt; Hører din kode ikke mere til i gruppen c/c++ ?!?
Avatar billede ziron Nybegynder
22. marts 2001 - 13:51 #14
du kan skrive c++ i delphi...
Avatar billede wisen Nybegynder
22. marts 2001 - 13:55 #15
Uses ShellAPI;
 
ShellExecute(Handle,\'open\',PChar(\'net.exe\'),pchar(\'use drev server\'),pchar(\'\'),SW_HIDE);

\"Handle\", \"drev\" og \"server\" skal selvfølgelig være sigende :)

/wisen
Avatar billede wisen Nybegynder
22. marts 2001 - 13:56 #16
ziron >> cool, det var jeg ikke klar over :=)
Avatar billede ziron Nybegynder
22. marts 2001 - 13:59 #17
k... men handle skal bare være handle...

/ZIRON
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:01 #18
ShellExecute svarer bare til at gå i en DOS-box og udføre komendoen NET USE .....

/Martin
Avatar billede ziron Nybegynder
22. marts 2001 - 14:02 #19
er, ved det... det er også lidt af en fakemåde...
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:09 #20
En af jer må forklare jer så 14årige begyndere kan forstå, det eneste jeg vil er at dele en mappe med en funktion der eks. skulle se sådan her ud: deling(\'c:\\windows\\\');

jeg er ligeglad med om jeg skal bruge et delphiprogram eller bat fil bare jeg får et eksempel der er let at ændre!!!
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:13 #21
Ja, så er det jo ikke lige NET USE, men NET SHARE mener jeg den heder, prøv at gå ud i en dos-box og skriv \"NET /?\" og se om ikke du får svar på dit spørgsmål
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:15 #22
C:\\>net share /?
The syntax of this command is:


NET SHARE sharename
          sharename=drive:path [/USERS:number | /UNLIMITED]
                              [/REMARK:\"text\"]
                              [/CACHE:Manual | Automatic | No ]
          sharename [/USERS:number | /UNLIMITED]
                    [/REMARK:\"text\"]
                    [/CACHE:Manual | Automatic | No ]
          {sharename | devicename | drive:path} /DELETE

C:\\>

Ikke så svært endda *S*

/Martin
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:19 #23
kan i ikke skrive et eksempel på hvordan man deler mappen c:\\windows\\ og hvordan man afdeler den igen??? Så får i hele 30 point !!!!!!!!!
Avatar billede wisen Nybegynder
22. marts 2001 - 14:20 #24
Åh ja, det havde jeg ikke lige tænkt på. Skal du dele et drev/folder (net share) eller skal du bruge et delt drev/folder (net use) ?

Avatar billede cautoo Nybegynder
22. marts 2001 - 14:23 #25
jeg skal dele og afdele en mappe på min computer via en kommando enten i delphi eller dos

Avatar billede wisen Nybegynder
22. marts 2001 - 14:23 #26
Dele :

net share delt=c:\\windows

\"afdele\"

net share delt /delete

( tror jeg nok )
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:24 #27
men netshare virker ikke hos mig :-(
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:24 #28
TIL :

NET SHARE C:\\Windows /UNLIMITED

FRA :

NET SHARE C:\\Windows /DELETE

/Martin
Avatar billede wisen Nybegynder
22. marts 2001 - 14:24 #29
...det burde virke...
Avatar billede wisen Nybegynder
22. marts 2001 - 14:25 #30
det skal være mellemrum mellem \"net\" og \"share\"
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:26 #31
Besked fra dosén: kommandoen share er ukendt
Avatar billede wisen Nybegynder
22. marts 2001 - 14:28 #32
Hvilket OS bruger du ?
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:29 #33
Det virker bortset fra at jeg glemte sharenavnet
der skal stå :

NET SHARE DeltBib=C:\\Windows /UNLIMITED

NET SHARE Deltbib /DELETE



hvor DeltBib er det share navn du vælger selv.

/Martin

Avatar billede cautoo Nybegynder
22. marts 2001 - 14:29 #34
Den fra win98
Avatar billede wisen Nybegynder
22. marts 2001 - 14:30 #35
Det skal virke i win98... (det virker i Win95)

Prøv at skrive net /? og dump det her...
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:30 #36
hvis det er på dit arb. du sider er der sikkert lukket af for den mulighed.
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:32 #37
Den staår ikke under \"net /?\"

Og det er helt privat jeg laver dette
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:35 #38
ja og det virker i W2K

mystisk, det er en std. dos MSlan komando.

Har du installeret NETBUI protokolen, hvis ikke så prøv at install. den og prøv igen.
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:35 #39
NET HELP    Viser oplysninger om kommandoer og
            fejlmeddelelser.
NET INIT    Indlæser protokoller og drivere til netværkskort
            uden at binde dem til Protokolstyring.
NET LOGOFF  Afbryder forbindelsen mellem computeren og
            de delte ressourcer, den er forbundet til.
NET LOGON    Identificerer dig som medlem af en arbejdsgruppe.
NET PASSWORD Ændrer din logon-adgangskode.
NET PRINT    Viser oplysninger om udskriftskøer
            og kontrollerer udskriftsjob.
NET START    Starter serviceprogrammer.
NET STOP    Stopper serviceprogrammer.
NET TIME    Viser klokkeslættet eller synkroniserer computerens
            ur med uret på en Microsoft Windows til
            Workgroups, Windows NT, Windows 95, eller NetWare tidsserver.
NET USE      Opretter eller afbryder forbindelse til en
            delt ressource eller viser oplysninger om
            forbindelser.
NET VER      Viser typen og versionsnummeret for den
            arbejdsgrupperedirector, du bruger.
NET VIEW    Viser en liste med computere, der deler
            ressourcer eller en liste med delte ressourcer
            på en bestemt computer.
Avatar billede wisen Nybegynder
22. marts 2001 - 14:37 #40
hmm, meget mystisk....
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:37 #41
jeg har ikke netbui men jeg kan godt dele mapper fra windows af, det eneste er at jeg skal bruge et program der kan gøre det (eller dos)
Avatar billede wisen Nybegynder
22. marts 2001 - 14:39 #42
<gæt>

Har du installeret fil- og printerdeling i kontrolpanel->netværk ?

Jeg ved ikke, om den installerer en anden net.exe...
</gæt>
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:39 #43
Har du givet andre lov til at bruge dine filer og printere, det er et must, eller kan du ikke share noget ud.

Kan du dele noget ved at højreclicke fra stifinder ?, hvis ikke du kan derfra kan du heller ikke andre steder fra
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:40 #44
Ok, så er der nok kun og lave et program til det.
Avatar billede martinlind Nybegynder
22. marts 2001 - 14:41 #45
Men mystisk det er det nu stadig.
Avatar billede cautoo Nybegynder
22. marts 2001 - 14:43 #46
okey eg kommer igen i morgen og ser om i har et par eks.
Avatar billede cautoo Nybegynder
22. marts 2001 - 15:53 #47
wisen>> Ja det har jeg

martinlind>> Ja det kan jeg
Avatar billede cautoo Nybegynder
23. marts 2001 - 11:18 #48
Er der ikke nogen som vil lave et DELPHI eksempel til mig??? please, please.
Avatar billede borrisholt Novice
23. marts 2001 - 11:20 #49
kan du ikke bare porte de C++ eksemple jeg gav ?

Jens B
Avatar billede cautoo Nybegynder
23. marts 2001 - 11:24 #50
hvis du fortæller hvordan man compilerer det til et program
Avatar billede cautoo Nybegynder
23. marts 2001 - 15:55 #51
borrisholt>> KAn jeg så ikke få dig til at compilere programmet sådan at man kan skrive eks.: C:\\deling.exe del c:\\windows\\ og C:\\deling.exe undel c:\\windows\\ eller noget i den retning????????
Avatar billede cautoo Nybegynder
23. marts 2001 - 16:28 #52
Er der ikke en måde man kan dele i delphi eller en som kan fortælle mig hvordan man compilere c++ i delphi???????
Avatar billede martinlind Nybegynder
23. marts 2001 - 16:34 #53
Det gør man ved at konvertere det c eks. som Jens skrev.
Avatar billede cautoo Nybegynder
23. marts 2001 - 16:37 #54
...Er der ikke et sted hvor man kan konvertere eksemplet automatisk???
Avatar billede martinlind Nybegynder
23. marts 2001 - 16:41 #55
Nej, ikke så vist jeg ved, men det er altså ikke det helt store, hvis du bare starter fra en ende af, så vel jeg tro det kan gøres på en times tid, uden dog at love noget, men hvis jeg får tid i weekenden så vil jeg da gerne kigge på det.
Avatar billede martinlind Nybegynder
23. marts 2001 - 16:42 #56
hvis du gerne vil havde det så drop en mail til mig. martin@e-lind.dk
Avatar billede cautoo Nybegynder
23. marts 2001 - 16:46 #57
Det var nu det script som borisholt har skrevet jeg mente :-)
Avatar billede cautoo Nybegynder
23. marts 2001 - 16:47 #58
er der så ikke en der kender en GRATIS eller prøveversion af en c++ compiler der kan downloades???
Avatar billede martinlind Nybegynder
23. marts 2001 - 19:59 #59
Hvis du har denne fil på din maskine \"svrapi.dll\"
så gi mig din mail adr. og jeg sender et delphi program der kan mappe, du kan evt. få sourcen LANMAN 3.0 API, du kan lave et delings program på 3 liner, men det kører ikke under min W2K-workstation så jeg kan ikke rigtig lave det sidste for dig.

/Martin
Avatar billede ziron Nybegynder
23. marts 2001 - 20:32 #60
kan jeg ikke få sourcen til det program på 3 liner???

ziron@wanadoo.dk
Avatar billede martinlind Nybegynder
23. marts 2001 - 20:41 #61
ikke uden koden til API\'et også.

fra demoen:

NetCheck(NetShareAdd(PChar(MainForm.ServerName), 50, @ShareInfo, Sizeof(ShareInfo)));

måske jeg skal rette til 10 liner, man skal lige fylde ShareInfo også.
Avatar billede cautoo Nybegynder
24. marts 2001 - 11:37 #62
jeg har svrapi.dll filen o min email er dennis.ssh@computer.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester