| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Zugriff Netzlaufwerke (2048 mal gelesen)
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 27. Okt. 2005 15:22 <-- editieren / zitieren --> Unities abgeben:         
Um Netzwerklaufwerke anzuhängen verwende ich folgende Befehle: Set WSHNetWork = WScript.CreateObject("WScript.NetWork") dir = "\\server\share" WSHNetWork.MapNetWorkDrive ("Q:", dir) Das Laufwerk wird "sauber" angehängt. Wie kann ich aber jetzt abbrüfen, ob Acess Rechte auf den Share bestehen ? Im Explorer erhalte ich die Fehlermeldung "Auf Q:\ kann nicht zugegriffen werden. Zugriff verweigert". Ich habe noch versucht mit dem Ansatz Set wmiFileSecSetting = GetObject("winmgmts:Win32_LogicalFileSecuritySetting.path='" & dir &"'") weiterzukommen, aber da erhalte ich nur die Meldung: (null): 0x80041002. Wie kann ich das abfangen ? Axel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RENI Mitglied Entwickler

 Beiträge: 96 Registriert: 26.04.2002
|
erstellt am: 27. Okt. 2005 16:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Axel.Strasser
Hallo Axel, hier ein Beispiel aus meine Scriptsammlung. Gruß RENI strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colFolders = objWMIService. _ ExecQuery("Select * from Win32_Directory where name = 'c:\\Scripts'") For Each objFolder in colFolders Wscript.Echo "Archive: " & objFolder.Archive Wscript.Echo "Caption: " & objFolder.Caption Wscript.Echo "Compressed: " & objFolder.Compressed Wscript.Echo "Compression method: " & objFolder.CompressionMethod Wscript.Echo "Creation date: " & objFolder.CreationDate Wscript.Echo "Encrypted: " & objFolder.Encrypted Wscript.Echo "Encryption method: " & objFolder.EncryptionMethod Wscript.Echo "Hidden: " & objFolder.Hidden Wscript.Echo "In use count: " & objFolder.InUseCount Wscript.Echo "Last accessed: " & objFolder.LastAccessed Wscript.Echo "Last modified: " & objFolder.LastModified Wscript.Echo "Name: " & objFolder.Name Wscript.Echo "Path: " & objFolder.Path Wscript.Echo "Readable: " & objFolder.Readable Wscript.Echo "System: " & objFolder.System Wscript.Echo "Writeable: " & objFolder.Writeable Next Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 27. Okt. 2005 17:00 <-- editieren / zitieren --> Unities abgeben:         
Hallo reni, danke für Deine Antwort, die bringt mich leider nur nicht weiter, da die ganzen Funktionen, die Du aufführst, nicht mit Netzwerkdrives oder UNC Notationen funktionieren, für einen lokalen Rechner sind sie ausreichend. Darum bin ich ja den Umweg über den MapNetWorkDrive und "winmgmts:Win32_LogicalFileSecuritySetting" gegangen. Bei deinen Funktionen muss man dann irgendetwas mit einem Remote Aufruf zusammenbasteln. Axel [Diese Nachricht wurde von Axel.Strasser am 27. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fan-ME10 Mitglied DV-Adminstrator, Konstrukteur
  
 Beiträge: 543 Registriert: 21.08.2001 Erare humanum est
|
erstellt am: 28. Okt. 2005 07:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Axel.Strasser
Hallo Axel, wir haben im Prinzip folgende Vorgehensweise: Dim WSHNetwork Set WSHNetwork = WScript.CreateObject("WScript.Network") Function TryMapDrive(strDrive, strShare) On Error Resume Next WSHNetwork.MapNetworkDrive strDrive, strShare End Function TryMapDrive "M:", "\\RECHNER1\FREIGABE" TryMapDrive "N:", "\\RECHNER2\FREIGABE" ... HTH
------------------ Gruß Wilfried Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 28. Okt. 2005 08:29 <-- editieren / zitieren --> Unities abgeben:         
Das Script bringt mich langsam zur verzweiflung, ich bin jetzt einen Schritt weiter: Code:
Set fso = CreateObject("Scripting.FileSystemObject") Set fi = fso.OpenTextFile("C:\test.txt", ForReading)On Error Resume Next Do While fi.atEndOfStream <> true dir = fi.ReadLine WSHNetWork.RemoveNetWorkDrive "Q:" WSHNetWork.MapNetWorkDrive "Q:", dir Fehler = err.Number msgbox Fehler If Fehler <> 0 Then WScript.Echo ";" & Err.Description &" " & Fehler err.Clear Else Call GetAccessList("Q:\\") End If WSHNetWork.RemoveNetWorkDrive "Q:" Loop
In dem Textfile steht eine Auflistung von Shares. Ich habe dort testweise mal vier Shares definiert 1) Voller Zugriff 2) Share existiert nicht 3) Kein Access auf den Share 4) Voller Zugriff und jetzt bekomme ich bei 1), 3) und 4) immer die gleiche Fehlernummer : -2147022646 (Diese Netzwerkverbindung ist nicht vorhanden), obwohl ich bei 1) und 4) voll auf den Share zugreifen kann (getestet bei der Ausgabe der fehlernummer). Ich kapiere es nicht mehr. Axel
[Diese Nachricht wurde von Axel.Strasser am 28. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fan-ME10 Mitglied DV-Adminstrator, Konstrukteur
  
 Beiträge: 543 Registriert: 21.08.2001 Erare humanum est
|
erstellt am: 28. Okt. 2005 12:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Axel.Strasser
Hallo Axel, ich habe jetzt ca. eine halbe Stunde versucht, dein Script zum Laufen zu bringen. Krieg ich nicht hin. Habe dieselbe Fehlermeldung wie du. Probier doch mal meinen Scriptansatz, der funktioniert!! ------------------ Gruß Wilfried Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 28. Okt. 2005 13:04 <-- editieren / zitieren --> Unities abgeben:         
Danke für deinen Einsatz, habe das ganze jetzt zum Laufen gebracht, das Problem beim obigen Script ist, dass ich zuerst einen Drive abhänge der nicht existiert, daraus resultiert eine Fehlermedung, die zuerst zurückgesetzt werden muss. Dein Ansatz hätte mich da auch nicht weitergebracht, Ziel des Scripts ist es die Zugriffsberechtigungen von ca 200 Shares zu dokumentieren und soviele Laufwerke habe ich nicht bei Deiner Methode  und das zweite Problem war dass ich auch Laufwerke zwar verbinden kann, aber nicht darauf zugreifen darf, was die Subroutine nicht so gerne hatte. Axel PS: Wenn Du das komplette Script haben willst dann gib Bescheid  [Diese Nachricht wurde von Axel.Strasser am 28. Okt. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RENI Mitglied Entwickler

 Beiträge: 96 Registriert: 26.04.2002
|
erstellt am: 28. Okt. 2005 13:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Axel.Strasser
Hallo Axel, hast Du auch mal das mappen mit der angabe eines Benzters (Admin) versucht? Gruß RENI Dim net Set net = CreateObject("WScript.Network") net.MapNetworkDrive "I:", "\\computer2\public","True","Benutzer","Password" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 28. Okt. 2005 13:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo Reni, das Problem war nicht das Mappen, sondern das Abfangen wenn das Mappen nicht geht. Der Username + PW bringt mich da auch nicht viel weiter, da ich keinen "Domänen Admin Master Account" habe und so nie sicherstellen kann dass ich Zugriff auf alle Shares habe und ansonsten werden das Script vielleicht noch andere brauchen und die haben wieder andere rechte. Es funktioniert jetzt und ich habe 4 graue Haare mehr bekommen  Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fan-ME10 Mitglied DV-Adminstrator, Konstrukteur
  
 Beiträge: 543 Registriert: 21.08.2001 Erare humanum est
|
erstellt am: 28. Okt. 2005 14:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Axel.Strasser
Hallo Axel, ich verstehe nicht, warum du nicht meinen Lösungsansatz nimmst. Du musst doch nur noch die Schleife einbauen mit deiner Datei aus der du die Shares ausliest. Nach dem Mappversuch kannst du ja "gucken" was verbunden ist. ------------------ Gruß Wilfried Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 28. Okt. 2005 14:50 <-- editieren / zitieren --> Unities abgeben:         
Schau Dir das vbs an. Du hast bei Dir keinerlei Feedback über den Status nach dem Verbinden des Shares. Dein Ansatz macht einfach weiter und mein eigentliches Problem war dass man ein Netzwerkshare verbinden kann auch wenn man keine Berechtigung hat darauf zuzugreifen. Die Sachen sind jetzt alle abgefangen. Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |