2009-03-03 13 views
2

meine Namen sind Carlos Im aus Brasilien. Im Versuch, eine Datei wie diese zu öffnen:Delphi: Öffnen Sie eine Datei von einem anderen Computer

image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp'); 

aber es funktioniert nicht. Im Empfangen der Ausnahme

Klasse EFOpenError mit Meldung "Datei kann nicht geöffnet werden \ ntmemo01 \ c $ \ ozzy2.bmp 'Zugriff verweigert."

Danke, Carlos

+0

C $ a versteckt administrative Freigabe sind Sie sicher, dass das aktuelle Benutzerkonto über die richtigen Berechtigungen hat? http://support.microsoft.com/kb/314984 – stukelly

Antwort

15

Sie haben doppelte Schrägstriche verwenden.

image1.picture.loadfromfile('\\ntmemo01\c$\ozzy2.bmp'); 

Wenn Sie immer noch die Ausnahme erhalten, kann die Datei nicht von Ihrer Anwendung aus aufgerufen werden.

Als erstes sollten Sie sicherstellen, dass Sie mit dem Windows Explorer auf die Datei zugreifen können.

Geben Sie es einfach in den Ausführen-Dialog des Startmenüs (WinKey + R) und sehen, was passiert. Wenn es nicht funktioniert, machen es zuerst und dann gehen Sie zurück zu Ihrem Programm.

+0

image1.picture.loadfromfile ('\\ ntmemo01 \ c $ \ ozzy2.bmp') funktioniert nicht auch. Es gibt die gleiche Ausnahme zurück – user67348

+0

Hinzugefügt zu meiner Antwort. –

+0

In Delphi glaube ich nicht, dass Sie doppelte Backslashes verwenden können \\ können Sie? – Chapel

4

Wenn Sie diese exakt gleiche Zeichenfolge im Windows Explorer kopieren, wird die Datei geöffnet? Andernfalls könnte es ein Rechteproblem sein, wie durch den Fehler vorgeschlagen.

6

Ist das Laufwerk C: ntmemo01 freigegeben? Wenn es nicht freigegeben ist, können Sie nicht darauf zugreifen. Wenn es freigegeben ist, aber einen Benutzernamen und ein Passwort für den Zugriff benötigt, müssen Sie anders darauf zugreifen. Sie können einen Laufwerksbuchstaben wo es sich, einen Benutzernamen und Passwort in den Prozess bereitstellt:

const 
    RemoteName = '\\ntmemo01\C$'; 
    UserName = 'yourusername'; 
    Password = 'yourpassword'; 

function MapNetworkDrive: Boolean; 
var 
    NetRes: TNetResource; 
    Res: DWord; 
begin 
    Result := True; 
    FillChar(NetRes, SizeOf(TNetResource), 0); 
    NetRes.dwType := RESOURCETYPE_DISK; 
    NetRes.lpRemoteName := PChar(RemoteName); 
    NetRes.lpLocalName := 'H:'; // Whatever drive letter you want 
    Res := WNetAddConnection2(NetRes, PChar(Password), PChar(UserName), 0); 
    Result := (Res = NO_ERROR); 
end; 

unmappen danach:

function UnMapNetworkDrive: Boolean; 
var 
    Res: DWord; 
begin 
    Res := WNetCancelConnection2(PChar('H:'), 0, True); // same drive letter as above 
    Result := (Res + NO_ERROR); 
end; 
+0

C $ ist versteckte administrative Freigabe, aber die Zuordnung eines Laufwerks sollte helfen. http://support.microsoft.com/kb/314984 – stukelly

+0

Ja, ich weiß. Ich habe eine Notfallwiederherstellungsseite, die wir alle halbe Stunde aktualisieren. Ich ordne C $ auf einem 20 Meilen entfernten Rechner unter Verwendung einer IP-Adresse mit dem obigen Code zu. Solange es einen Benutzernamen und ein Passwort gibt, scheint es gut zu funktionieren. –

5

Wie DR erwähnt, erfordert der Dateiname Doppelschrägstriche für eine UNC path

Der Zugriff verweigert Nachricht schlägt vor, dass Sie keine Berechtigung zum Zugriff auf die C $ Freigabe auf dem Computer ntmemo01 haben.

C $ a ist versteckt administrative share Sind Sie sicher, dass das aktuelle Benutzerkonto die richtigen Berechtigungen hat? Sie müssen zuerst auf der Karte eine Festplatte einrichten, wie von Ken White

vorgeschlagen wird. Verwaltungsfreigaben sind in Windows Vista und Windows 7 standardmäßig deaktiviert, es sei denn, Sie treten einer Domäne bei. Sie können sie manuell wie folgt aktivieren.

Klicken Sie auf den Startknopf und geben Sie in das Suchfeld "regedit" ein und drücken Sie Enter.

Navigieren Sie zu HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System.

Fügen Sie einen neuen DWORD LocalAccountTokenFilterPolicy und geben ihm einen Wert von genannt.

Neustart und yer done!

Quelle: http://www.paulspoerry.com/2007/05/09/how-to-access-administrative-shares-on-vista-c/

Verwandte Themen