
얼마 전에 나는 모든 사람의 데스크탑에서 "TeamViewer 12 Host" 바로가기가 존재하는 경우 이를 삭제하기 위해 VB 스크립트를 요청하는 질문을 게시했습니다. 원격이 아닌 로컬. 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
"액세스 거부"가 발생합니다.