Script for Shortcut Removal

I am in need of a scrip[t that will scan all user’s desktops and delete any icon that is pointed to a specific URL. Reason being is we have replaced a website that users need to go to but so many people still have the old icon and we cant seem to get everyone to remove it themselves.

Hi @dminga,

Thanks for the script request. You have requested the same script request in both forum.itarian.com and forum.xcitium.com, we will continue the communication from here.

We have asked our script developer to check and provide feedback on the request.

Kind Regards,
PremJK

Please cancel request. I was able to write it myself. Please see below for my example. My organization uses OneDrive so that made it an interesting variable. You will need to update my “list” to match your possible OneDrive formats. I removed my org for confidentiality.


iconname = itsm.getParameter('Shortcut_Name')  # provide the shortcut icon name as Shortcut_Name parameter eg. comodo
username = itsm.getParameter('Username')  # provide the username parameter to run the script with elevated permissions
password = itsm.getParameter('Password')  # provide the password parameter corresponding to the username

import os
import ctypes
import subprocess
from subprocess import PIPE, Popen

def ecmd(command):
    class disable_file_system_redirection:
        _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
        _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
        def __enter__(self):
            self.old_value = ctypes.c_long()
            self.success = self._disable(ctypes.byref(self.old_value))
        def __exit__(self, type, value, traceback):
            if self.success:
                self._revert(self.old_value)

    with disable_file_system_redirection():
        obj = Popen(command, shell=True, stdout=PIPE, stderr=PIPE)
    out, err = obj.communicate()
    ret = obj.returncode
    if ret == 0:
        if out:
            return out.strip()
        else:
            return ret
    else:
        if err:
            return err.strip()
        else:
            return ret

def run_command_with_elevated_permissions(command):
    encoded_command = 'powershell -Command "{}"'.format(command)
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    process = subprocess.Popen(['runas', '/user:{}'.format(username), encoded_command], startupinfo=startupinfo, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    process.stdin.write(password.encode('utf-8'))
    process.stdin.close()
    output, error = process.communicate()
    return output, error, process.returncode

found = False

# Define the list of OneDrive folder names to check
onedrive_folders = ['OneDrive', 'OneDrive - ORG NAME', 'OneDrive - ORG NAME VARIATION']

# Iterate through each user folder
for user_folder in os.listdir('C:\\Users'):
    for onedrive_folder in onedrive_folders:
        user_onedrive_path = os.path.join('C:\\Users', user_folder, onedrive_folder)

        # Check if the user folder has the specified OneDrive folder
        if not os.path.isdir(user_onedrive_path):
            continue

        desktop_folder_path = os.path.join(user_onedrive_path, 'Desktop')

        # Check if the Desktop folder exists within the OneDrive folder
        if not os.path.isdir(desktop_folder_path):
            continue

        # Print the list of files in the user's desktop folder
        print('Files in the desktop folder for user {}:'.format(user_folder))
        for file in os.listdir(desktop_folder_path):
            print(file)

        # Check for the internet shortcut file
        for file in os.listdir(desktop_folder_path):
            if file.lower().endswith('.url') and iconname.lower() in file.lower():
                icon_path = os.path.join(desktop_folder_path, file)
                print('Deleting: {}'.format(icon_path))  # Debug information
                try:
                    os.remove(icon_path)
                    found = True
                    print('The Quick Icon "{}" has been deleted'.format(iconname))
                except Exception as e:
                    print('Error: {}'.format(str(e)))

if not found:
    print('The Quick Icon "{}" was not found on any user desktops.'.format(iconname))

print('Desktop icon deletion procedure completed.')

1 Like