AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes

[gelöst] Code 67 beim Verbinden eines Netzlaufwerkes

Ein Thema von Klaus01 · begonnen am 17. Jan 2006 · letzter Beitrag vom 17. Jan 2006
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.764 Beiträge
 
Delphi 10.4 Sydney
 
#1

[gelöst] Code 67 beim Verbinden eines Netzlaufwerkes

  Alt 17. Jan 2006, 15:50
Hallo,

ich versuche mich gerade an einer Consolenanwendung.
Aus diversen Codeschnipseln habe ich das untenstehende zusammengesetzt.

Das Programm soll einen freien Laufwerksbuchstaben finden (das tut es auch) und
auf diesen Laufwerksbuchstaben ein Netzlaufwerk verbinden ein Programm ausführen
und danach das Laufwerk wieder trennen.

Problem ist, bei dem Versuch das Laufwerk anzubinden bekomme ich folgende Fehlermeldung:

D:\development\Delphi6\Projects\mountTool>netInsta ll
Exception EOSError in module mapfree.exe at 0000ACAA.
System Error. Code: 67.
Der Netzwerkname wurde nicht gefunden.

Nun, nach langem Suchen bin ich nicht fündig geworden wo das Problem liegt.
Ich kann von der Kommandozeile (DosBox) das Laufwerk mit den Parametern verbinden.
Es hilft auch nichts den Rechnernamen mit der IPAdresse auszutauchen.

Vielleicht was ja jemand von Euch einen Rat.

Grüße
Klaus

Delphi-Quellcode:
program netInstall;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows,
  shellAPI,Dialogs;



function DriveExists(DriveByte: Byte): Boolean;
begin
  Result := GetLogicalDrives and (1 shl DriveByte) <> 0;
end;

function DriveType(DriveByte: Byte): String;
begin
  case GetDriveType(PChar(Chr(DriveByte + Ord('A')) + ':\')) of
    DRIVE_UNKNOWN: Result := 'unbekannt';
    DRIVE_NO_ROOT_DIR: Result := 'Laufwerk existiert nicht';
    DRIVE_REMOVABLE: Result := 'Wechselmedium';
    DRIVE_FIXED: Result := 'Festplatte';
    DRIVE_REMOTE: Result := 'Netzwerk';
    DRIVE_CDROM: Result := 'CD-ROM/DVD';
    DRIVE_RAMDISK: Result := 'RAM Disk';
  else
    Result := 'anderer Laufwerkstyp';
  end;
end;

function ConnectNetworkDrive(const ADrive: String;
  const ADirectory, AUsername, APassword: String;
  const ARestoreAtLogon: Boolean ): Boolean;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
  lPwd, lUser: PChar;
begin
  NetResource.dwType:=RESOURCETYPE_DISK;
  NetResource.lpLocalName:=PChar(ADrive);
  NetResource.lpRemoteName:=PChar(ADirectory);
  NetResource.lpProvider:=nil;

  if ARestoreAtLogon then
    dwFlags:=CONNECT_UPDATE_PROFILE
  else
    dwFlags:=0;

  if AUsername<>'then
    lUser:=PChar(AUsername)
  else
    lUser:=nil;

  if APassword<>'then
    lPwd:=PChar(APassword)
  else
    lPwd:=nil;

  Result:=WNetAddConnection2(NetResource,
                             lPwd,
                             lUser,
                             dwFlags)=NO_ERROR;
end;





VAR
  i:Byte;
  found: Boolean;
  drives: Array[1..26] of char;

  freeDrive:String;

begin
  // init array
  FOR i:=1 TO 26 DO
    drives[i]:=' ';

  //mark any entry within the array which have a drive
  FOR i:=1 TO 26 DO
    begin
      if driveExists(i) THEN
        drives[(i + Ord('A')-ORD('A'))]:='x';
    end;

   // search for an available drive letter
   i:=1;
   found := false;
   REPEAT
     found := drives[i] = ' ';
     inc(i)
   until (i > 26) OR found;

   freeDrive:=lowerCase(chr(ord('A')+i-1))+':';

   // map network drive to available drive letter
   if ConnectNetworkDrive(freeDrive,' \\mhhb2kpc.mchh1.siemens.de\TMSetup',' /user:mhhb2kpc.mchh1.siemens.de\TMSetup ',' @siemens01 ',false) then
     WriteLn('Networkdrive connected')
   else
     begin
       RaiseLastOSError;
     end;

   IF fileExists(freedrive+'\test\project1.exe') THEN
     BEGIN
       WinExec(PChar(freedrive+'\test\project1.exe'),sw_show);
     END;
   // remove mapped network drive
   shellexecute(0,'open','net',PChar('use '+freedrive+' /delete'),nil,sw_hide);

  { TODO -oUser -cConsole Main : Insert code here }
end.
Klaus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.764 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes

  Alt 17. Jan 2006, 17:55
manchmal hat man auch ein Brett vor dem Kopf.

Die Lösung ist: das /user: for dem Usernamen wegzulassen
das kommt davon wenn man zuviel mit net use arbeitet.
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von tn249
tn249

Registriert seit: 18. Jan 2004
Ort: München
164 Beiträge
 
Delphi 2005 Personal
 
#3

Re: [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes

  Alt 17. Jan 2006, 18:03
Funktioniert das auch für Win98Se?
oder geht das nur mit den neueren versionen von windows?

Gruß
Thomas
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.764 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes

  Alt 17. Jan 2006, 18:47
@tn249
Kann ich leider nicht testen (habe hier w3k server und w2k client), sollte aber für alle Win32 Systeme funktionieren.
Wenn man bei Win98se keine Usernamen und Passwörte braucht kann man die auch weglassen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz