Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WNetAddConnection2 & Vista (https://www.delphipraxis.net/102456-wnetaddconnection2-vista.html)

CodeX 29. Okt 2007 12:16


WNetAddConnection2 & Vista
 
Zum Verbinden von Netzlaufwerken verwende ich folgenden Code:

Delphi-Quellcode:
function ConNetDrive(Laufwerk: String; Pfad: String;
  Username: String; Password: String; RestoreAtLogon: Boolean): DWORD;
var
  NetResource: TNetResource;
  dwFlags: DWORD;
  chPassword, chUsername : PChar;
begin
  ZeroMemory(@NetResource, sizeof(TNetResource));
  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;

  if Username <> '' then
    chUsername := PChar(Username)
  else
    chUsername := nil;

  if Password <> '' then
    chPassword := PChar(Password)
  else
    chPassword := nil;

  Result := WNetAddConnection2(NetResource, chPassword, chUsername, dwFlags);

end;
Was unter XP & 2000 wunderbar funktioniert, macht in Vista Probleme (Programm wird als Administrator ausgeführt).
Die Funktion wird zwar irgendwie abgearbeitet (bei falschen Eingaben gibt es entsprechende Rückmeldungen, bei korrekten Eingaben kommt 0 zurück und die Einträge sind per WNetGetConnection auch kontrollierbar), jedoch werden die Netzlaufwerke nicht im Arbeitsplatz angezeigt und können auch nicht direkt in der Adresszeile aufgerufen werden.

Welche Änderung könnte es hier gegeben haben, dass Vista hier noch explizit zum Aktualisieren gebracht werden könnte bzw. wie könnte das gehen?

Bernhard Geyer 29. Okt 2007 12:20

Re: WNetAddConnection2 & Vista
 
Der Explorer läuft nicht mit Admin-Rechten und kann damit nicht deine (mit Adminrechten) verbunden Laufwerke sehen.

CodeX 29. Okt 2007 12:26

Re: WNetAddConnection2 & Vista
 
Oh ... na super.

Wie dann? Das Programm muss mit Adminrechten laufen...

Bernhard Geyer 29. Okt 2007 12:36

Re: WNetAddConnection2 & Vista
 
Zitat:

Zitat von CodeX
Wie dann? Das Programm muss mit Adminrechten laufen...

Funktion in eigene Exe auslagern und diese dann ohne/mit Admin-Rechte starten.

CodeX 2. Nov 2007 01:18

Re: WNetAddConnection2 & Vista
 
Gibt es vielleicht noch eine andere Möglichkeit, die ohne weitere Programmdateien auskommt?
Abgesehen davon dachte ich, dass Programmrechte vererbt werden und ein Programm seinen Status nicht wieder heruntersetzen kann!?

RWarnecke 2. Nov 2007 06:19

Re: WNetAddConnection2 & Vista
 
Warum muss Dein Programm mit Admin-Rechten laufen. Jeder User, ob Benutzer oder Hauptbenutzer kann sich Laufwerke verbinden. Hast Du das ganze vielleicht schon mal mit dem VISTA-Manifest ausprobiert ? Dort kannst Du das Programm normal starten und dann über das Manifest Administratorrechte anfordern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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