Entwickler-Ecke

Internet / Netzwerk - Auf Netzwerkrechner anmelden


CodeRed - Fr 23.09.05 18:16
Titel: Auf Netzwerkrechner anmelden
Hi!
Ich will ein Programm schreiben, mit dem ich auf einen klick Daten zwischen Laptop und PC hin und her schaffen kann. Meine Idee war es, das Problem mit der $-Freigabe zu lösen. Mein letztes Problem ist nun noch, wie ich dem Netzwerkrechner den Beutzernamen (Administrator) und das Passwort mitteilen soll.
Ich hoffe ihr könnt mir helfen.
MfG
CodeRed


Hansi@OMG - Fr 23.09.05 18:58

Du könntest temporär ein Netzlaufwerk verbinden und dann wieder trennen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
function NetzlaufwerkVerbinden( Laufwerk: string;
  Pfad: string; Username: string; Password: string;
  RestoreAtLogon: boolean ): DWORD;
var
  NetResource: TNetResource;
  dwFlags:     DWORD;
begin
  with NetResource do begin
    dwType := RESOURCETYPE_DISK;
    lpLocalName := PChar(Laufwerk);
    lpRemoteName := PChar(Pfad);
    lpProvider := nil;
  end;

  if (RestoreAtLogon) then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;

  Result := WNetAddConnection2(NetResource,PChar(Password),
    PChar(Username),dwFlags);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (NetzlaufwerkVerbinden('X:',
                            '\\NTSERVER\DATEN',
                            'Test',
                            '',
                            false)=0)
  then
    ShowMessage('OK')
  else
    ShowMessage('Fehler!');
end;

function ConnectPrinterDevice(_lptPort: string; _netPath: string; _showError: Boolean;
  _reconnect: Boolean): DWORD;
var
  nRes: TNetResource;
  errCode: DWORD;
  dwFlags: DWORD;
begin
  { Fill NetRessource with #0 to provide uninitialized values }
  { NetRessource mit #0 füllen => Keine unitialisierte Werte }
  FillChar(NRes, SizeOf(NRes), #0);
  nRes.dwType := RESOURCETYPE_PRINT;
  { Set Printername and Networkpath }
  { Druckername und Netzwerkpfad setzen }
  nRes.lpLocalName  := PChar(_lptPort);
  nRes.lpRemoteName := PChar(_netPath); { Example: \\Test\Printer1 }
  { Check if it should be saved for use after restart and set flags }
  { Überprüfung, ob gespeichert werden soll }
  if _reconnect then
    dwFlags := CONNECT_UPDATE_PROFILE and CONNECT_INTERACTIVE
  else
    dwFlags := CONNECT_INTERACTIVE;

  errCode := WNetAddConnection3(Form1.Handle, nRes, nilnil, dwFlags);
  { Show Errormessage, if flag is set }
  { Fehlernachricht aneigen }
  if (errCode <> NO_ERROR) and (_showError) then
  begin
    Application.MessageBox(PChar('An error occured while connecting:' + #13#10 +
      SysErrorMessage(GetLastError)),
      'Error while connecting!',
      MB_OK);
  end;
  Result := errCode; { NO_ERROR }
end;

function DisconnectNetDrive(_locDrive: string; _showError: Boolean; _force: Boolean;
  _save: Boolean): DWORD;
var
  dwFlags: DWORD;
  errCode: DWORD;
begin
  { Set dwFlags, if necessary }
  { Setze dwFlags auf gewünschten Wert }
  if _save then
    dwFlags := CONNECT_UPDATE_PROFILE
  else
    dwFlags := 0;
  { Cancel the connection see also at http://www.swissdelphicenter.ch/en/showcode.php?id=391 }
  { Siehe auch oben genannten Link (Netzlaufwerke anzeigen) }
  errCode := WNetCancelConnection2(PChar(_locDrive), dwFlags, _force);
  { Show Errormessage, if flag is set }
  { Fehlernachricht anzeigen }
  if (errCode <> NO_ERROR) and (_showError) then 
  begin
    Application.MessageBox(PChar('An error occured while disconnecting:' + #13#10 +
      SysErrorMessage(GetLastError)),
      'Error while disconnecting',
      MB_OK);
  end;
  Result := errCode; { NO_ERROR }
end;


CodeRed - Fr 23.09.05 23:16

ok, danke, hat super geklappt!!!


JustusJonas - Mi 11.01.06 15:35

Da bedanke ich mich auch mal. War mir sehr nützlich! :)

Greetz