Probleme mit VB-Skript

Probleme mit VB-Skript

Vor einiger Zeit habe ich eine Frage gestellt, in der ich nach einem VB-Skript gefragt habe, um eine Verknüpfung „TeamViewer 12 Host“ von jedem Desktop zu löschen, sofern sie existiert. Lokal, nicht remote. Ich habe es auf meiner Windows 10-Workstation ausgeführt und es hat funktioniert. Es hat sogar die Umleitung meines Desktops auf einen Server kompensiert. Das Problem ist, dass ich es auf keinem anderen Computer zum Laufen bekomme. Auf allen anderen Computern wird beim Versuch, die Verknüpfung zu löschen, eine Zugriffsverweigerungsmeldung angezeigt, obwohl sie lokale Administratoren sind. Auch sie sind lokale Administratoren. Ich habe sogar versucht, es von einer Eingabeaufforderung mit erhöhten Rechten aus auszuführen. Ohne Erfolg. Das Seltsame ist, dass ich über den Datei-Explorer dorthin navigieren und es problemlos löschen kann. Ich kann mir nur vorstellen, dass es etwas im Skript ist. Irgendeine Idee, was los ist?

    ' Specify filename to remove from user desktops
strShortcut = "TeamViewer 12 Host.lnk"

' Create file system object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

' Find root of user data folder (C:\USERS on recent versions of Windows)
strUsers = objFSO.GetParentFolderName(objFSO.GetParentFolderName(objShell.SpecialFolders("Desktop")))
Set objUsers = objFSO.GetFolder(strUsers)

' Check each user folder, and look for our file in the DESKTOP subfolder
For Each objFolder In objUsers.SubFolders
    strCheck = objFolder & "\Desktop\" & strShortcut
    Wscript.Echo "Checking:" & strCheck
    ' If shortcut file exists remove it
    If objFSO.FileExists(strCheck) Then
        Wscript.Echo "Deleting:" & strCheck
        objFSO.DeleteFile(strCheck)
    End If
Next

Antwort1

Wenn Sie das Problem des umgeleiteten Desktops und das Berechtigungsproblem, das durch die Verknüpfung „Alle Benutzer“ entsteht, umgehen möchten, können Sie das Suchverzeichnis hartcodieren und alle Suchpfade überspringen, die „Alle Benutzer“ enthalten. Beispiel (die beiden Änderungen sind mit Kommentaren gekennzeichnet):

strShortcut = "TeamViewer 12 Host.lnk"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

strUsers = "C:\Users" ' <-- or "C:\Documents and Settings" for XP, etc.
Set objUsers = objFSO.GetFolder(strUsers)

For Each objFolder In objUsers.SubFolders
    strCheck = objFolder & "\Desktop\" & strShortcut
    If InStr(strCheck, "All Users") = 0 Then ' <-- SKIP "All Users" to avoid permission problems
        Wscript.Echo "Checking:" & strCheck
        If objFSO.FileExists(strCheck) Then
            Wscript.Echo "Deleting:" & strCheck
            objFSO.DeleteFile(strCheck)
        End If
    End If
Next

Ursprüngliche Antwort:

Sie haben erwähnt, dass Ihr Desktop zu einem Netzwerkstandort umgeleitet wird. Wenn Ihre Benutzer über Durchquerungsrechte für Ihren Netzwerkprofilpfad verfügen ( strUsersin diesem Zusammenhang),sollenSie erhalten die Fehlermeldung „Zugriff verweigert“, da die For EachSchleife versucht, eine Datei vom umgeleiteten Desktop eines anderen Benutzers zu löschen.

Beispiel: Das Löschen \\fileserver\profiles\YourUser\Desktop\TeamViewer 12 Host.lnkist problemlos möglich, \\fileserver\profiles\SomeOtherUser\Desktop\TeamViewer 12 Host.lnkführt jedoch zu der Meldung „Zugriff verweigert“.

verwandte Informationen