Konuyu Oyla:
  • Derecelendirme: 1/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
lnk dosya işleme silme
#1
Kısayol oluşturmak için kullanılabilecek kod:

uses
 System.IOUtils,
 ShlObj,
 ComObj,
 ActiveX;

const
 CSIDL_DESKTOP                 = $0000; { <desktop> }
 CSIDL_INTERNET                = $0001; { Internet Explorer (icon on desktop) }
 CSIDL_PROGRAMS                = $0002; { Start Menu\Programs }
 CSIDL_CONTROLS                = $0003; { My Computer\Control Panel }
 CSIDL_PRINTERS                = $0004; { My Computer\Printers }
 CSIDL_PERSONAL                = $0005; { My Documents.  This is equivalent to CSIDL_MYDOCUMENTS in XP and above }
 CSIDL_FAVORITES               = $0006; { <user name>\Favorites }
 CSIDL_STARTUP                 = $0007; { Start Menu\Programs\Startup }
 CSIDL_RECENT                  = $0008; { <user name>\Recent }
 CSIDL_SENDTO                  = $0009; { <user name>\SendTo }
 CSIDL_BITBUCKET               = $000a; { <desktop>\Recycle Bin }
 CSIDL_STARTMENU               = $000b; { <user name>\Start Menu }
 CSIDL_MYDOCUMENTS             = $000c; { logical "My Documents" desktop icon }
 CSIDL_MYMUSIC                 = $000d; { "My Music" folder }
 CSIDL_MYVIDEO                 = $000e; { "My Video" folder }
 CSIDL_DESKTOPDIRECTORY        = $0010; { <user name>\Desktop }
 CSIDL_DRIVES                  = $0011; { My Computer }
 CSIDL_NETWORK                 = $0012; { Network Neighborhood (My Network Places) }
 CSIDL_NETHOOD                 = $0013; { <user name>\nethood }
 CSIDL_FONTS                   = $0014; { windows\fonts }
 CSIDL_TEMPLATES               = $0015; { <user name>\appdata\roaming\template folder }
 CSIDL_COMMON_STARTMENU        = $0016; { All Users\Start Menu }
 CSIDL_COMMON_PROGRAMS         = $0017; { All Users\Start Menu\Programs }
 CSIDL_COMMON_STARTUP          = $0018; { All Users\Startup }
 CSIDL_COMMON_DESKTOPDIRECTORY = $0019; { All Users\Desktop }
 CSIDL_APPDATA                 = $001a; { <user name>\Application Data }
 CSIDL_PRINTHOOD               = $001b; { <user name>\PrintHood }
 CSIDL_LOCAL_APPDATA           = $001c; { <user name>\Local Settings\Application Data (non roaming) }
 CSIDL_ALTSTARTUP              = $001d; { non localized startup }
 CSIDL_COMMON_ALTSTARTUP       = $001e; { non localized common startup }
 CSIDL_COMMON_FAVORITES        = $001f; { User favourites }
 CSIDL_INTERNET_CACHE          = $0020; { temporary inter files }
 CSIDL_COOKIES                 = $0021; { <user name>\Local Settings\Application Data\..\cookies }
 CSIDL_HISTORY                 = $0022; { <user name>\Local Settings\Application Data\..\history}
 CSIDL_COMMON_APPDATA          = $0023; { All Users\Application Data }
 CSIDL_WINDOWS                 = $0024; { GetWindowsDirectory() }
 CSIDL_SYSTEM                  = $0025; { GetSystemDirectory() }
 CSIDL_PROGRAM_FILES           = $0026; { C:\Program Files }
 CSIDL_MYPICTURES              = $0027; { C:\Program Files\My Pictures }
 CSIDL_PROFILE                 = $0028; { USERPROFILE }
 CSIDL_SYSTEMX86               = $0029; { x86 system directory on RISC }
 CSIDL_PROGRAM_FILESX86        = $002a; { x86 C:\Program Files on RISC }
 CSIDL_PROGRAM_FILES_COMMON    = $002b; { C:\Program Files\Common }
 CSIDL_PROGRAM_FILES_COMMONX86 = $002c; { x86 C:\Program Files\Common on RISC }
 CSIDL_COMMON_TEMPLATES        = $002d; { All Users\Templates }
 CSIDL_COMMON_DOCUMENTS        = $002e; { All Users\Documents }
 CSIDL_COMMON_ADMINTOOLS       = $002f; { All Users\Start Menu\Programs\Administrative Tools }
 CSIDL_ADMINTOOLS              = $0030; { <user name>\Start Menu\Programs\Administrative Tools }
 CSIDL_CONNECTIONS             = $0031; { Network and Dial-up Connections }
 CSIDL_COMMON_MUSIC            = $0035; { All Users\My Music }
 CSIDL_COMMON_PICTURES         = $0036; { All Users\My Pictures }
 CSIDL_COMMON_VIDEO            = $0037; { All Users\My Video }
 CSIDL_RESOURCES               = $0038; { Resource Directory }
 CSIDL_RESOURCES_LOCALIZED     = $0039; { Localized Resource Directory }
 CSIDL_CDBURN_AREA             = $003b; { USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning }


function GetSpecialFolderPath(CSIDLFolder: Integer): string;
var
  FilePath: array [0..MAX_PATH] of char;
begin
 SHGetFolderPath(0, CSIDLFolder, 0, 0, FilePath);
 Result := FilePath;
end;


function CreateDesktopShellLink(const CSID: Cardinal; const TargetName: string): Boolean;
var
 IObject: IUnknown;
 ISLink: IShellLink;
 IPFile: IPersistFile;
 PIDL: PItemIDList;
 LinkName: string;
 InFolder: array [0..MAX_PATH-1] of Char;
begin
 Result := False;

 IObject := CreateComObject(CLSID_ShellLink);
 ISLink := IObject as IShellLink;
 IPFile := IObject as IPersistFile;

 with ISLink do
 begin
   SetDescription('Açıklama ...');
   SetPath(PChar(TargetName));
   SetWorkingDirectory(PChar(ExtractFilePath(TargetName)));
 end;

 SHGetSpecialFolderLocation(0, CSID, PIDL);
 SHGetPathFromIDList(PIDL, InFolder) ;

 LinkName := IncludeTrailingPathDelimiter(GetSpecialFolderPath(CSID));
 LinkName := LinkName + TPath.GetFileNameWithoutExtension(TargetName) + '.lnk';

 if not FileExists(LinkName) then
   if IPFile.Save(PWideChar(LinkName), False) = S_OK then
     Result := True;
end;

Kullanıcıya özel başlangıç dizinine kısayol oluşturmak için kullanımı:
procedure TForm1.Button1Click(Sender: TObject);
begin
 if CreateDesktopShellLink(CSIDL_ALTSTARTUP, 'C:\Folder\ExeFile.exe') then
   ShowMessage('Kısayol dosyası oluşturuldu ...');
end;

Daha sonra kısayol dosyasını silmek için aşağıdaki gibi bir kod kullanabilirsiniz:


procedure TForm1.Button2Click(Sender: TObject);
var
 FileName: string;
begin
 FileName := GetSpecialFolderPath(CSIDL_ALTSTARTUP);
 FileName := TPath.Combine(FileName, 'ExeFile.lnk');

 if TFile.Exists(FileName) then
 begin
   try
     TFile.Delete(FileName);
   except
     on E: Exception do
     begin
       ShowMessage('Kısayol dosyası silinemedi.' + sLineBreak + AnsiQuotedStr(E.Message, '"'));
     end;
   end;
 end;
end;

Bu silme kodu laptobumda win 10 da çalışıyor.Akıllı tahta üzerine bir projem var tahtada win 8.1 var.Administratordan açık olmasına ragmen silinemedi hatası veriyor
Amacım ein acıldıgında program devreye girsin bu kodla giriyor ama silme işlemi balarısız açılışta exe yine devrede oluyor.
Ne yapmam gerekir yani pc acıldıgında exe acılsın ve bir butonla gerektiğinde exe silsin ne önerşrsiniz kodda bir hata yok ama yardımlarınızı bekliyorum
Cevapla
#2
Bir trojan veya illegal bir program yazmayı planladığınızı tahmin ederek kodları yazmayacağım. Sadece DeleteFile fonksiyonunu kullanın(Zaten sadece dosya yolunu tırnak içine kalmak kaldı...). 

4zRDoL.gif
kisisel_logo_dark.png
WWW
Cevapla
#3
Arkadaşım ne trojeni ya nerden çıkardın etkileşinli tahta için anahtar programı olacak bu
Cevapla
#4
(30-05-2018, Saat: 08:46)haydarxxx Adlı Kullanıcıdan Alıntı: Arkadaşım ne trojeni ya nerden çıkardın etkileşinli tahta için anahtar programı olacak bu

istediğiniz tüm şeyler virüs oluşturmayı işaret ediyor. Dosya gizleme, kısayol oluşturma ve silme.... Her neyse zaten yukarıda yazdıklarım hakkında fikriniz olsaydı benim mesajımın içinde cevabı gorebilirdiniz. Ben yine yazayim çünkü;

DeleteFile(path);
kisisel_logo_dark.png
WWW
Cevapla
#5
@"hyperxman" bence yanlış anladınız:
@haydarxxxin verdiği kodlara bakılırsa, bir kısayol oluşturma ve oluşturulan bu kısayolu silme örneği var. 
Bunda bir sakınca göremedim.
There's no place like 127.0.0.1
WWW
Cevapla
#6
(30-05-2018, Saat: 16:06)SimaWB Adlı Kullanıcıdan Alıntı: @"hyperxman" bence yanlış anladınız:
@haydarxxxin verdiği kodlara bakılırsa, bir kısayol oluşturma ve oluşturulan bu kısayolu silme örneği var. 
Bunda bir sakınca göremedim.

Üstat bundan önce arkadaş dosya gizleme gibi işlemler istediği için böyle bir tahminde bulundum. Varsayım yaptığım açık. Yine de kodları verdim.
kisisel_logo_dark.png
WWW
Cevapla
#7
@"hyperxman"
Alıntı:Zaten sadece dosya yolunu tırnak içine kalmak kaldı...

dosya yolunu bilmiyorum
[Ars=delphi] TFile.Delete(path);

       Delete(path);[/ars]
silme kodu nasıl eklenecek ikiside olmadı Huh

hocam birde bu lnk açılışta çok geç devreye giriyor.Başka bir yöntem varmı.registery yerine bu yöntemi öneren oldu registery silme sorunu oluyor.
Cevapla
#8
(30-05-2018, Saat: 16:59)haydarxxx Adlı Kullanıcıdan Alıntı: hyperxman  


Alıntı:Zaten sadece dosya yolunu tırnak içine kalmak kaldı...
dosya yolunu bilmiyorum
TFile.Delete(path);

       Delete(path);
silme kodu nasıl eklenecek ikiside olmadı Huh

hocam birde bu lnk açılışta çok geç devreye giriyor.Başka bir yöntem varmı.registery yerine bu yöntemi öneren oldu registery silme sorunu oluyor.

Hocam yolu bir değişkene atayın oradan da sadece DeleteFile (değişken adı) Smile
kisisel_logo_dark.png
WWW
Cevapla
#9
FileName: string;

hocam zaten burada bir değişkende değil mi
TFile.Delete(FileName);

burada hata neyki win10 laptobumda siliyor Etkileşimli tahtada dosya windows 8.1 silinemedi hatası veriyor.administarator dan da açmama rağmen değişkeni siz yazarmısınız.teşekkürler şimdiden
Cevapla
#10
@haydarxxx Size bugün bir özel mesaj gönderdim. 
Okudunuz mu?
Yazdığınız kodları Delphi kod biçimlendirme tag'ları arasına alabilir misiniz?
Kullanımını bilmiyorsanız, gönderdiğim özel mesajı okuyun.
DelphiCan'dır!
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Video İşleme nevzatc 1 541 12-08-2025, Saat: 06:54
Son Yorum: mrmarman
  Projeye dosya olarak eklenmiş dosyanın içeriğini okumak yhackup 9 1.752 18-04-2025, Saat: 21:39
Son Yorum: bakyuz
  Windows Explorer dan delphi formuna dosya Drag&Drop işlemi örneği adelphiforumz 1 572 23-01-2025, Saat: 15:16
Son Yorum: yhackup
  idftp dosya kontrolü ercanskose 2 791 30-10-2024, Saat: 16:15
Son Yorum: ercanskose
  karakter silme sorunu ercanskose 2 655 03-09-2024, Saat: 11:02
Son Yorum: ercanskose



Konuyu Okuyanlar: