| 

.NET C# Java Javascript Exception

7
Hallo Leute,

woran kann es liegen, dass ich bei der Abfrage aller verfügbaren Laufwerk mit DriveInfo.GetDrives() keine Netzlaufwerke (und mit Subst erzeugte Laufwerke) aufgelistet bekomme?
Auch habe ich das Problem, wenn ich mit "Directory.Exists(@"N:\Test\")" das Vorhandensein des Verzeichnisses "Test" auf dem Netzlaufwerk "N" prüfe immer FALSE zurückbekomme, auch wenn das Verzeichnis existiert. An den Rechten sollte es nicht liegen, da die betreffende Anwendung mit Adminrechten gestartet wird.

Vielen Dank für Eure Hilfe
Carsten
11.12.2011
Carsten Ilwig 337 1 1 6
6 Antworten
2
Hallo,

ich habe mir ein Testprogramm geschrieben um dein Fehler nachvollziehen zu können:
static void Main(string[] args)
{
var driveList = DriveInfo.GetDrives();
foreach (var info in driveList)
{
Console.WriteLine("Type: {0} Name: {1}", info.DriveType, info.Name);
}

Console.WriteLine(Directory.Exists(@"R:\c#\"));
Console.ReadLine();
}


Hier die Ausgabe der Console:
Type: Fixed  Name: C:\  //Richtige Festplatte, HDD 1
Type: CDRom Name: D:\
Type: Fixed Name: E:\ // USB Laufwerk
Type: Removable Name: F:\ // Karten Leser
Type: Removable Name: G:\ // Karten Leser
Type: Network Name: H:\ // Netzlaufwerk zu einem Server
Type: Network Name: J:\ // Netzlaufwerk zu einem Server
Type: Network Name: K:\ // Netzlaufwerk zu einem Server
Type: Network Name: L:\ // Netzlaufwerk zu einem Server
Type: Fixed Name: R:\ // Mit subst erzeugtes Laufwerk, realer Pfad: E:\r\
Type: Fixed Name: S:\ // Mit subst erzeugtes Laufwerk, realer Pfad: E:\s\
Type: Fixed Name: T:\ // Partition auf HDD1
Type: Network Name: Z:\ // Netzlaufwerk zu einem Server
True // Prüfung ob R:\c#\ existiert


Ich kann deinen Fehler Aufgrund meines Tests nicht bestätigen. Ich hoffe es hilft dir.

Grüße
12.12.2011
Nicolai Schönberg 2,4k 2 9
0
Ich habe die Erfahrung gemacht, dass es durchaus vorkommen kann dass verbundene Netzlaufwerke im elevated-mode nicht verbunden waren.
Ob das auch bei dir so ist, kannst du leicht feststellen, wenn du eine Kommandozeile im Adminmodus startest und den befehl "net use" ausführst.
12.12.2011
HKogler 66 2
0
Hallo,

vielen Dank für Eure schnellen Antworten.
Ich habe keine Ahnung wo der Fehler lag, aber mit dem Beispielcode funktioniert es nun auch bei mir. :-)

Carsten
12.12.2011
Carsten Ilwig 337 1 1 6
0
Hallo Leute,

ich habe mich da wohl doch etwas zu früh gefreut.

Wenn ich mein Programm als Admin starte (lokales Menü Win7), bzw. wenn das Programm mit Hilfe einer Manifestdatei beim Starten Adminrechte anfordert, dann liefert mir GetDrives() keine Netzlaufwerke mehr zurück.
Starte ich es als "normaler" Benutzer, werden die Netzlaufwerke erkannt.
Was macht das denn für einen Sinn und viel wichtiger,
wie kann ich dieses Problem beheben?

Vielen Dank für Eure Hilfe.
Carsten
13.12.2011
Carsten Ilwig 337 1 1 6
Hallo - Ich könnte mir vorstellen das dein "normaler Benutzer" bei dem Server eingetragen ist und berechtigt ist die Netzlaufwerke zu benutzen. Wahrscheinlich sind die Netzlaufwerke auch als "Normaler Benutzer" eingetragen worden. Arbeitest du in einer Domäne? Sollten sich "normaler Benutzer" und Admin unterscheiden (unterschiedlicher Benutzername), solltest du den Admin Account beim Server als berechtigt eintragen lassen
Nicolai Schönberg 13.12.2011
0
Hallo Nicolai,

vielen Dank für Deine Antwort.
Der "normale Benutzer" bin ich selbst und ich bin als Admin angemeldet.
Wenn ich bei einem Netzlaufwerk in den Eigenschaften im Kartenreiter "Sicherheit" nachschaue, haben alle eingetragenen Benutzer alle Rechte auf dieses Laufwerk.
Die Netzwerklaufwerke, bzw. ein Testlaufwerk das mit 'subst' erstellt wurde habe ich ganz normal unter meinem (Admin)Benutzer erstellt bzw. verbunden.

Das komische ist ja, wenn ich das Programm, das die Laufwerke abfragt ohne Adminrechte strate, bekomme ich auch die Netzlaufwerke zurück.
Starte ich es mit Adminrechten, werden die Netzlaufwerke nicht erkannt.
Das ist doch völlig unlogisch, zumindest für mich.

Du müsstest das doch eigentlich ganz leicht nachvollziehen können,
wenn Du Dein kleines Testprogramm von weiter oben einfach mal mit Adminrechten startest.
Genauso habe ich es jetzt zum Testen gemacht.
13.12.2011
Carsten Ilwig 337 1 1 6
Carsten Ilwig 337 1 1 6
Das ist eben das Problem. Unter Win7 ist Admin nicht gleich Admin. Du bist als User angemeldet, der Admin-Rechte hat, das ist ein Account. Wenn du ein Programm "mit Adminrechten" startest, wird es mit einem anderen Account gestertet, dem "Systemadministrator". Die Netzlaufwerke wurden aber unter deinem normalen user-Account ge"subst", somit weiss der Systemadministratoraccount nix davon... Lösung siehe Nicolais Kommentar!
Eiger 13.12.2011
Ganz so leicht kann ich das leider nicht machen - Ich bin a) im Büro und hab hier nur WinXP b) Fehlt mir das lokale Admin Kennwort, ich arbeite mit einem Domain Benutzer. Wenn du es bis morgen Abend nicht selbst herausbekommst schaue ich nochmal bei mir zu Hause woran es liegen kann. Gruß
Nicolai Schönberg 13.12.2011
@Eiger:
Ok, das habe ich verstanden.
Die Lösung allerdings nicht wirklich, da ich kein "Netzwerkfreak" bin. Wie muss ich den Netzlaufwerke als normaler User anmelden, damit sie auch von einem Sysadmin erkannt werden?

@Nicolai:
Da ich derzeit noch keinen Denkansatz für eine Lösung habe, wäre ich Dir sehr Dankbar, wenn Du morgen Abend Dir die Sache mal anschauen könntest.
Sollte ich bis dahin doch noch eine Lösung gefunden haben, werde ich das hier umgehend kundtun.
Carsten Ilwig 13.12.2011
0
Hallo Carsten,
also ich habe gerade Nicolais Lösungsansatz mal durchgesehen und verstehe auch nicht ganz,wie er das meint (ich bin aber auch kein "Netzwerkfreak", das soll am besten er mal erklären). Allerdings scheint es ein generelles Problem seit der Einführung der UAC zu sein(siehe hier). Es gibt eine Lösung hierfür über die registry, die allerdings auf Kosten der Sicherheit geht... Natürlich bestehen noch die Möglichkeiten, dass du die Netzlaufwerke einfach über den Administratoraccount auch noch mapst, oder das Programm als "normaler user" ausführst. ich weiss nicht, ob diese beiden Möglichkeiten für dich in Frage kommen...?!
13.12.2011
Eiger 1,9k 2 9

Stelle deine Netzlaufwerk-Frage jetzt!