Autor Beitrag
AScomp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Fr 19.09.14 22:26 
Hallo zusammen,

stehe vor folgendem bisher unüberwindbaren Problem:

Meine Anwendung wird automatisch beim Systemstart mit Administratorrechten gestartet. Zu vorgegebenen Uhrzeiten greift sie dann auf vom User festgelegte Netzwerkordner per UNC-Pfad zu. Die Netzwerkordner sind also nicht gemapped, der Zugriff erfolgt direkt per "\\LAN-PC\c\folder\".

Allerdings funktioniert der Zugriff erst, sobald der Benutzer einmal im Windows Explorer auf den LAN-PC zugegriffen hat. Dabei reicht es schon, wenn nur kurz \\LAN-PC\c\ angeklickt wurde.

Falls dieser Vorgang nicht durchgeführt wurde (oder nicht wenigstens eine andere Anwendung auf den LAN-PC zugegriffen hat), scheitern alle "FileExists"-Abfragen meiner Anwendung, \\LAN-PC\c\ wird dann überhaupt nicht gefunden.

Was also habe ich bisher versucht?

a) Net use per ShellExecute bzw. mit WNetAddConnection - kein Erfolg
b) Explorer.exe aufgerufen mit Parameter \\LAN-PC\c\ - kein Erfolg
c) EnableLinkedConnections in Registry auf 1 gestellt - kein Erfolg

Wird meine Anwendung NICHT mit Adminrechten gestartet, funktioniert alles einwandfrei. Es muss aber doch möglich sein, dass meine höher-privilegierte Anwendung auf das Netzwerk zugreift! Und zwar ohne vorherigen, manuellen Zugriff auf das Netzwerk.

Hat jemand eine Idee? Ich tappe offensichtlich völlig im Dunkeln.

Viele Grüße

Andy
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Fr 19.09.14 23:02 
Hast du "b) Explorer.exe aufgerufen mit Parameter \\LAN-PC\c\ - kein Erfolg" mit der Windowsauthentifikation ausgeführt? Die müsstest du ja haben. Wenn du den Explorer mit Adminrechten startes, hast du dann Zugriff auf das Netzlaufwerk?

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
AScomp Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 162


Delphi 5, Delphi 7, Delphi 2007, Delphi 2009, Delphi XE, Delphi 10 Seattle
BeitragVerfasst: Fr 19.09.14 23:33 
Das war mein letzter Versuch mit dem Explorer:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
var
  PH: THandle;
  PI: TProcessInformation;
  SI: TStartupInfo;
begin
  FillChar(PI, SizeOf(PI), 0);

  FillChar(SI, SizeOf(SI), 0);

  SI.cb := SizeOf(SI);
  SI.dwFlags := STARTF_USESHOWWINDOW;
  SI.wShowWindow := SW_SHOWNORMAL;

  if CreateProcess('c:\windows\explorer.exe', PChar(' ' + Directory), nilnil, False, 0nilnil, SI, PI) then
  begin
    WaitForInputIdle(PI.hProcess, INFINITE);
    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);
  end;


Die Rechte müssten ja vererbt worden sein. Der Windows Explorer zeigte dann statt des Netzwerkpfades (in meinem Beispiel "\\LAN-PC\c\") den lokalen Dokumente-Ordner an.

Der Explorer manuell gestartet mit Adminrechten zeigt den Netzwerkrechner an, man kann problemlos auf alle Ressourcen zugreifen.