Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zugriffsrecht System.Security.Principal-Namespace

Zugriffsrecht System.Security.Principal-Namespace
Andi
Hallo,
gibt es eine Möglichkeit via VBA zu prüfen, ob der momentane PC Benutzer Zugriff auf Verzeichnis XY hat.
So in etwa

Function Permission (GetUsernamePC, GetFolder) as boolean
Wenn PcName zugriffsrecht besitz auf Verzeichnis xy dann gebe true zurück, wenn nicht false.
End Function

Danke

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zugriffsrecht System.Security.Principal-Namespace
28.10.2011 00:00:48
Stef@n
Hallo Andi,
reicht es dir aus, wenn geprüft wird ob der Ordner vorhanden ist ?
dann

Sub Vorhanden_Phad()
'   Fehler falls LW nicht vorhanden
If Dir("C:\Eigene Dateien\")  "" Then
MsgBox "vorhanden"
Else
MkDir "C:\Eigene Dateien\\"
MsgBox "nicht vorhanden"
End If
End Sub


Sub Ordner_vorhanden()
'   von Berti Koern
Dim Fso, Ordnername
Set Fso = CreateObject("Scripting.FileSystemObject")
Ordnername = "C:\Eigene Dateien\"
'    MsgBox Fso.FolderExists(Ordnername)
If Fso.FolderExists(Ordnername) = False Then MkDir "C:\Eigene Dateien\"
End Sub
Gruß Stef@n
Anzeige
@Stefan Reicht nicht aus
28.10.2011 09:55:10
Andi
Auf einem nt Server sind n Verzeichnise und n Gruppen mit Zugriffrechten zugeordnet.
Beispiel Gruppe A (PC User Peter, Monika und Ralf) kann nur auf Verzeichnis A zugreifen, aber nicht auf Verzeichnis B bis Verzeichnis N. Gruppe B (PC User Herbert, Klaus und Petra) kann nur auf Verzeichnis B zugreifen. Gruppe Z (PC User Peter, Monika, Ralf und Herbert) kann nur auf Verzeichnis Z zugreifen.
Alle Gruppen haben Zugriffsrecht auf einen Ordner, in dem das Excel Auswertungs Tool hinterlegt ist. Es ist ein Auswertungstool von "sensiblen" Daten (Der Antrag auf eine Datenbank App wurde aus Kostengründen abgelehnt :-( ), erstellt Grafiken und Reporte.
Datenbasis sind die hinterlegten Excelfiles (Formulare) in den oben beschriebenen n Verzeichnissen auf denen nur bestimmte PC User Nt mässig geregelt Zugriff haben.
Das Tool fragt automatisch ab, auf welches Verzeichnis Zugriff erfolgen soll. Sollte ein User keinen nt Zugriffsrechte haben, so kommt es zu einem Error. Ich möchte den Error nicht als Kriterium verwenden, sondern zuvor den Environment.UserName Property (System)
Gets the user name of the person who is currently logged ermitteln und via VBA abfragen, ob der dieser User gemäss selektierten Verzeichnis mindestens Leserechte besitzt.
Try und Catch Methode ist mir zu dirty.
Gefunden habe ich gestern abend das hier:
http://www.dotnet-snippets.de/dns/effektive-benutzerrechte-ermitteln-SID1377.aspx
Hoffentlich ist das der richtige Weg und keine Sackgasse.
THX Andi
Anzeige
Erledigt
28.10.2011 11:07:34
Andi
erledigt . Danke an Alias Nepumuk
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Private Const FILE_ALL_ACCESS = &H1F01FF
Private Const FILE_APPEND_DATA = &H4
Private Const FILE_DELETE = &H10000
Private Const FILE_DELETE_CHILD = &H40
Private Const FILE_EXECUTE = &H20
Private Const FILE_READ_ATTRIBUTES = &H80
Private Const FILE_READ_CONTROL = &H20000
Private Const FILE_READ_DATA = &H1
Private Const FILE_READ_EA = &H8
Private Const FILE_SYNCHRONIZE = &H100000
Private Const FILE_WRITE_ATTRIBUTES = &H100
Private Const FILE_WRITE_DAC = &H40000
Private Const FILE_WRITE_DATA = &H2
Private Const FILE_WRITE_EA = &H10
Private Const FILE_WRITE_OWNER = &H80000

Public Sub test()
Dim lngReturn As Long
lngReturn = Check_Folderaccess(CStr(BrowseForFolder)) '("D:\Eigene Dateien\aviproxy")
If Not lngReturn And FILE_WRITE_DATA Then MsgBox "Nicht schreiben"
If Not lngReturn And FILE_READ_DATA Then MsgBox "Nicht lesen"
If lngReturn And (FILE_WRITE_DATA Or FILE_READ_DATA) Then MsgBox "Vollzugriff"
End Sub


Private Function Check_Folderaccess(strFolder As String) As Long
Dim objWMI As Object, objItem As Object
Dir$ ""
strFolder = (Replace(strFolder, "\", "\\"))
Set objWMI = GetObject("winmgmts:\\.\root\cimv2"). _
ExecQuery("Select * from Win32_Directory Where Name = '" & strFolder & "'")
For Each objItem In objWMI
Check_Folderaccess = objItem.AccessMask
Next
End Function

Anzeige
AW: Erledigt
28.10.2011 11:49:07
Stef@n
Prima Andi,
und schön, daß Du Deine Lösung gepostet hast !
Sicher auch interessant für viele Andere ;)
Gruß Stef@n
ps: Nepumuk erstellt schon seit Jahren in vielen Foren geniale Lösungen ;))))

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige