VB 脚本的问题

VB 脚本的问题

不久前,我发布了一个问题,要求编写一个 VB 脚本,从任何人的桌面(如果存在)中删除快捷方式“TeamViewer 12 Host”。本地,不是远程。我在 Windows 10 工作站上运行了它,它成功了。它甚至弥补了我的桌面被重定向到服务器的缺陷。问题是我无法让它在其他任何人的计算机上工作。在其他所有人的计算机上,即使他们是本地管理员,当他们试图删除它时也会收到“访问被拒绝”错误。他们也是本地管理员。我甚至尝试从提升的命令提示符运行它。没有成功。奇怪的是,我可以通过文件资源管理器导航到它并毫无问题地删除它。我唯一能想到的就是它是脚本中的东西。知道发生了什么吗?

    ' 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

答案1

如果要跳过重定向桌面的问题和“所有用户”连接点造成的权限问题,您可以对搜索目录进行硬编码,并跳过任何包含“所有用户”的搜索路径。示例(两个更改都标有注释):

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

原始答案:

您提到您的桌面被重定向到网络位置。如果您的用户拥有访问您的网络配置文件路径的权限(strUsers在此上下文中),他们应该For Each当循环尝试从另一个用户的重定向桌面删除文件时,收到“访问被拒绝”错误。

例如:删除\\fileserver\profiles\YourUser\Desktop\TeamViewer 12 Host.lnk是可以的,但是删除后\\fileserver\profiles\SomeOtherUser\Desktop\TeamViewer 12 Host.lnk会出现“拒绝访问”的情况。

相关内容