+ Ответить в теме
Показано с 1 по 1 из 1

Тема: Удалить ярлыки, созданные для всех пользователей

  1. #1
    programmer Shouldercannon will become famous soon enough
    Регистрация
    08.06.2008
    Сообщений
    72
    Вес репутации
    11

    Question Удалить ярлыки, созданные для всех пользователей

    Доброго времени суток.
    Была необходимость создать ярлык на рабочем столе и автозапуске для всех учётных записей начиная с Windows XP и до 10
    Код :
    1. function GetDesktopPath: String;
    2. var
    3.   Buffer: Array[0..MAX_PATH] of Char;
    4. begin
    5.   if ShGetSpecialFolderPath(Application.Handle, Buffer, CSIDL_COMMON_DESKTOPDIRECTORY, False) then Result := Buffer else Result := '';
    6. end;
    7.  
    8. function GetStartupPath: String;
    9. var
    10.   Buffer: Array[0..MAX_PATH] of Char;
    11. begin
    12.   if ShGetSpecialFolderPath(Application.Handle, Buffer, CSIDL_COMMON_STARTUP, False) then Result := Buffer else Result := '';
    13. end;
    14.  
    15. function CreateShortcut(const CmdLine, Args, WorkDir, LinkFile: String): IPersistFile;
    16. var
    17.   MyObject: IUnknown;
    18.   MySLink: IShellLink;
    19.   MyPFile: IPersistFile;
    20.   WideFile: WideString;
    21. begin
    22.   MyObject := CreateComObject(CLSID_ShellLink);
    23.   MySLink := MyObject as IShellLink;
    24.   MyPFile := MyObject as IPersistFile;
    25.   with MySLink do
    26.   begin
    27.     SetPath(PChar(CmdLine));
    28.     SetArguments(PChar(Args));
    29.     SetWorkingDirectory(PChar(WorkDir));
    30.   end;
    31.   WideFile := LinkFile;
    32.   MyPFile.Save(PWChar(WideFile), False);
    33.   Result := MyPFile;
    34. end;
    35.  
    36. procedure TFormSettings.CBCreateShortcutClick(Sender: TObject);
    37. var
    38.   FPath: String;
    39. begin
    40.   FPath := Format('%s\%s.lnk', [GetDesktopPath, ProgramName]);
    41.  
    42.   if CBCreateShortcut.Checked then
    43.   begin
    44.     if not FileExists(FPath) then CreateShortcut(ExtractFilePath(Application.ExeName) + ExtractFileName(Application.ExeName), '', ExtractFilePath(Application.ExeName), FPath);
    45.   end
    46.   else if FileExists(FPath) then DeleteFile(FPath);
    47. end;
    Теперь это не нужно. Пытаюсь удалить созданные ярлыки
    Код :
    1.   Edit1.Text := Format('%s\%s.lnk', [GetDesktopPath, GetField(ConfigFile, '.')]);
    2.  
    3.   if FileExists(Edit1.Text) then
    4.   begin
    5.     ShowMessage('Ярлык найден');
    6.     DeleteFile(Edit1.Text);
    7.   end
    8.   else ShowMessage('Ярлык не найден');
    9.   // Автозагрузка
    10.   Edit2.Text := Format('%s\%s.lnk', [GetStartupPath,  GetField(ConfigFile, '.')]);
    11.  
    12.   if FileExists(Edit2.Text) then
    13.   begin
    14.     ShowMessage('Автозапуск найден');
    15.     DeleteFile(Edit2.Text);
    16.   end
    17.   else ShowMessage('Автозапуск не найден');
    но нет.
    Проверял пути сравнением и через MD5Hash, всё совпадаёт, но файлы не найдены и не удаляются. Где подвох?

    Нашёл ошибку. В имени ярлыка есть пробел.
    Последний раз редактировалось Shouldercannon; 24.01.2017 в 22:01.

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
+ Ответить в теме

Похожие темы

  1. Сортировка всех вложенных списков на всех формах в Access
    Добрый день всем !! Обращаюсь вам за ответом, в очень сложной для меня ситуации. Есть база Access школы. В которой очень много разных форм, и...
    от kuznetsovSergey в разделе MS Office и VB(A).
  2. Из жизни пользователей MS OFFICE
    В последнее время мне довелось столкнутся с несколькими мелкими ошибками пользователей MS OFFICE, приведшими к весьма неприятным для них...
    от Aent в разделе MS Office и VB(A).
  3. Как перенести всех пользователей из Security одного MSSQL Server в другой
    На двух серваках установлено по MS SQL Server 2000. Базы перенесены, а вот пользователи с их именами и паролями из раздела Security - нет. Как это...
    от Стас в разделе SQL
  4. Не успевают отображаться динамически созданные узлы
    Что-то я не фтыкаю что не так: нужно вывести список, а выводится только первый элемент, а затем заменяется на последний, в результате получается...
    от __Yuri__ в разделе JScript, VBScript, DHTML...
  5. Для организаций-пользователей 1С: (Москва)
    Для организаций-пользователей 1С: Предлагаю еженедельное обслуживание на основании оформленного договора на совместительство. Индивидуальные...
    от Приступа Александр в разделе Поиск работы и заказов.

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения