![]() |
[gelöst] Code 67 beim Verbinden eines Netzlaufwerkes
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. |
Re: [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes
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. |
Re: [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes
Funktioniert das auch für Win98Se?
oder geht das nur mit den neueren versionen von windows? Gruß Thomas |
Re: [gelöst] Code 67 beim Verbinden eines Netzlaufwerkes
@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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz