Windows 7 - Verzeichnisüberprüfung

06/12/2010 - 11:18 von Ralf Weideland | Report spam
Hallo Ihr Lieben!

Ich habe ein Problem bei dem ich im Moment nicht weiter komme.
Ich habe eine Autoupdate-Funktion die im Internet prüft ob es neue
Updates gibt, wenn ja, sollen diese in das Verzeichnis Updates
(C:\Program Files\Programmname\Updates) gespeichert werden.
Wenn es das Verzeichnis "Updates" nicht gibt, soll es erstellt werden.

Und hier ist das Problem:
Ich prüfe mit einer Funktion "p_DirExists" ob es das Verzeichnis gibt.
Ich bekomme immer True unter Windows 7 zurück, obwohl es dieses
Verzeichnis nicht gibt.

Ich habe einmal mit diesen Funktionen geprüft:

Private Function p_DirExists(ByVal sPath As String) As Boolean
On Error Resume Next
p_DirExists = CBool(GetAttr(sPath) And vbDirectory)
End Function

Private Function p_DirExists2(ByVal sPath As String) As Boolean
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
p_DirExists2 = (UCase$(Dir$(sPath & "ul")) = "NUL")
End Function


Private Function p_DirExists3(ByVal sPath As String) As Boolean
On Error Resume Next
p_DirExists3 = Dir(sPath, vbDirectory) <> ""
End Function

Unter WinXP ist alles OK!

Dann habe ich das Verzeichnis einmal angelegt, manuell im Explorer.
Das hat funktioniert. Mein Programm liefert dann auch immer noch
True, das ist ja soweit OK.
Habe das Verzeichnis wieder manuell gelöscht, immer noch True!

Dann habe ich einmal ein anderes Verzeichnis abgefragt:
C:\Program Files\Programmname\Test
Alle DirExist-Funktionen geben False zurück.

Ich stehe total auf dem Schlauch, habe keine Ahnung warum das so ist?

Gibt es eine rationale Erklàrung dafür?

Ralf Weideland
 

Lesen sie die antworten

#1 G.Wietzorek
06/12/2010 - 12:20 | Warnen spam
Am 06.12.2010 11:18, schrieb Ralf Weideland:
Hallo Ihr Lieben!

Ich habe ein Problem bei dem ich im Moment nicht weiter komme.
Ich habe eine Autoupdate-Funktion die im Internet prüft ob es neue
Updates gibt, wenn ja, sollen diese in das Verzeichnis Updates
(C:\Program Files\Programmname\Updates) gespeichert werden.
Wenn es das Verzeichnis "Updates" nicht gibt, soll es erstellt werden.

Und hier ist das Problem:
Ich prüfe mit einer Funktion "p_DirExists" ob es das Verzeichnis gibt.
Ich bekomme immer True unter Windows 7 zurück, obwohl es dieses
Verzeichnis nicht gibt.

Ich habe einmal mit diesen Funktionen geprüft:

Private Function p_DirExists(ByVal sPath As String) As Boolean
On Error Resume Next
p_DirExists = CBool(GetAttr(sPath) And vbDirectory)
End Function

Private Function p_DirExists2(ByVal sPath As String) As Boolean
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
p_DirExists2 = (UCase$(Dir$(sPath & "ul")) = "NUL")
End Function


Private Function p_DirExists3(ByVal sPath As String) As Boolean
On Error Resume Next
p_DirExists3 = Dir(sPath, vbDirectory) <> ""
End Function

Unter WinXP ist alles OK!

Dann habe ich das Verzeichnis einmal angelegt, manuell im Explorer.
Das hat funktioniert. Mein Programm liefert dann auch immer noch
True, das ist ja soweit OK.
Habe das Verzeichnis wieder manuell gelöscht, immer noch True!

Dann habe ich einmal ein anderes Verzeichnis abgefragt:
C:\Program Files\Programmname\Test
Alle DirExist-Funktionen geben False zurück.

Ich stehe total auf dem Schlauch, habe keine Ahnung warum das so ist?




Einfach mal als Schnellschuß... Hast Du an die Virtualisierung gedacht -
d.h. hat Dein Updateprogramm ein integriertes Manifest für Win Vista/7?
Hast Du daran gedacht, dass Du erhöhte Rechte brauchst, um im
angegebenen Verzeichnis zu schreiben oder es zu erstellen?

Gert


"Probleme kann man niemals mit derselben Denkweise lösen, durch die sie
entstanden sind."
Albert Einstein

Ähnliche fragen