Windows kısayolunun yolunu güncellemesini nasıl durdurabilirim?


24

Ürünümü geliştirirken, test cihazımda aynı anda kurulu uygulamanın birkaç sürümü var. Ancak, uygulamamın çalışması için kullandığı mutlak yolları elde etmek için, test etmek istediğim sürümün doğru yolu alabilmesi için klasörleri değiştirmem veya yeniden adlandırmam gerekiyor C:\Program Files\My Company\My App\My App.exe. Bu yolu hedefleyen bir kısayol yaptım, ancak şu anda sürümlerden hiçbiri bu yola sahip olmadığında bu kısayol açılırsa, dosyanın kalıcı olarak taşındığını düşünerek kısayol otomatik olarak kendini günceller. Bu ne olduğunu keşfedene kadar sessizliklere neden oldu. Bunun şimdiye kadar Windows kısayollarının bir özelliği olduğunu bilmiyordum.

Yani sorum basit. Bu özelliği kapatmanın bir yolu var mı? Global olarak iyidir, ancak kısayol başına bir çözüm daha iyi olurdu.

Kısayol yerine toplu iş dosyası kullanmak tek bir çözümdür, ancak yine de bir kısayol kullanırken bu işi yapmanın bir yolu olup olmadığını merak ediyorum.

Windows 10 Home ve Windows 7 Home kullanıyorum.


10
Geçmişte yaptığım şey .bat, örneğin basit bir komutla bir toplu iş dosyası ( ) kullanmaktır start "" "C:\path\to\file.exe".
Bob,

1
mklinkBunun yerine bir .lnkdosya yerine sembolik bir bağlantı oluşturmayı ( komutu kullanarak ) denediniz mi? Yoksa bunlar da güncellendi mi?
JAB

1
@ JAB sembolik bağlantıları güncellenmemeli, ancak bazı dezavantajlara sahip olmalıdır (yönetici ayrıcalıkları gerektirir, argümanları geçemez vb.). Onlar bir sorun değilse iyi çalışırlar.
Bob,

3
Kısayolun salt okunur yapılmasının işe yarayacağını düşündüm (alıştığından eminim) ama test ettiğimin olmadığını gördüm. Bunun nedeni, kısayolun yeniden yazılmamasıdır; Kısayol çalıştırıldığında hedef bulunur. Sadece hiç kimse denemez.
Chris H,

1
@PetSerAl yukarıda dediğim gibi, bu işe yaramaz.
Chris H,

Yanıtlar:


13

PowerShell'i kullanabilirsiniz! Bu küçük komut dosyası, LNK dosyasını, klasik shortcutyardımcı programı kullanmakla aynı efekti oluşturmak için sallar .

$linkfile = Resolve-Path $args[0]
$bytes = [IO.File]::ReadAllBytes($linkfile)
$bytes[0x16] = $bytes[0x16] -bor 0x36
[IO.File]::WriteAllBytes($linkfile, $bytes)

Kullanmak için, o metni bir .ps1dosya olarak kaydedin , örn notrack.ps1. Henüz yapmadıysanız, PowerShell etiketi wiki'nin Kodları Etkinleştirme bölümündeki talimatları izleyin . Sonra bir PowerShell isteminden çalıştırabilirsiniz:

.\notrack.ps1 C:\path\to\my\shortcut.lnk

Bu şekilde ayarlanan kısayollar, hedefleri hareket ettiğinde değişmez. Eğer böyle bir kısayol kırılırsa, açmaya çalıştığınızda hiçbir şey olmaz.

Senaryomda kullanılan ikili matematiği bu 48 sayfalık Microsoft PDF'den LNK formatında topladım .


25

Hizmeti durdurun ve devre dışı bırakın: Dağıtılmış Bağlantı İzleme İstemcisi (TrkWks).

Dağıtılmış Bağlantı İzleme, bağlantının kısayollar gibi bir NTFS birimindeki bir dosyaya bağlandığı senaryolardaki bağlantıları izler. Bu dosya yeniden adlandırılırsa, aynı bilgisayardaki başka bir birime taşınırsa, başka bir bilgisayara taşınırsa veya başka benzer senaryolara taşınırsa, Windows dosyayı bulmak için Dağıtılmış Bağlantı İzlemeyi kullanır.

Kaynak: Dağıtılmış Bağlantı İzleme - Microsoft Destek


İyi fikir, ama dikkate değer bir şekilde işe yaramadı. Kısayol, yol bir dizin daha uzunken bile dosyayı buldu.
Kyle Delaney

Hizmetin durdurulduğundan emin misin? DLTC servisini durdurduktan sonra yürütülebilir dosyayı taşıdım veya yeniden adlandırdım. Kısayolu çalıştırdığımda, hedefin eksik olduğunu ve kısayolu silmek istediğini belirten "Kısayol ile ilgili Sorun" hatası aldım.
Steven

10
"Doğru hedefi bulma" işlevi, Windows 9x serisine dayanıyor ve Windows'un NT sürümlerinden önce geliyor. DLT, Windows 9x'te yoktu. Bu DLT'nin alakasız olduğunu söylemek değildir; , Windows edecek bir kısayol hedefi bulmak için yardımcı olur DLT kullanın.
MSalters

2
@Steven Evet, hizmetin kapalı olduğundan eminim. Windows 10'da, Hizmetlere girdim, Dağıtılmış Bağlantı İzleme İstemcisi buldum, durdur düğmesini tıklattım, bilgisayarımı yeniden başlattım ve hizmeti yeniden kontrol ettim. Başlat düğmesi var ve servis kaçmıyor. Kısayollar hala kendilerini günceller.
Kyle Delaney

8

shortcut.exeOption komutunu kullanın -s:

shortcut: [-? -h -f -c -r -s] [[-t] target [[-n] name]] [-d working directory]
        [-a Arguments] [-i Iconfile] [-x Icon index] [-u {all|[natdix]}]
        [-l logfile]

  -? -h        This help
  -f           Force overwrite of an existing short cut
  -c           Change existing shortcut
  -s           Make shortcut non tracking (Stupid)
  -r           Resolve broken shortcut
  -t target    Specifies the target of the shortcut
  -n name      Specifies the file name of the shortcut file
  -d directory Specifies the directory name to start the application in
  -a arguments Specifies the arguments passed when the shortcut is used
  -i iconfile  Specifiles the file the icon is in
  -x index     Specifies the index into the icon file
  -u [spec]    Dumps the contents of a shortcut. 'all' is the same as 'natdix'
               but the letters of 'natdix' can be specified to display specific
               fields in the shortcut (repeats allowed, and order followed)
  -l logfile   record error messages in specified file

4
Ne yazık ki shortcut.exe artık hazır değil.
Daniel B,

@DanielB Haklısın, bazı Windows sürümlerinde shortcut.exe dosyasını kurtardığımı unuttum.
Sunzi

2
@Daniel hangi Windows sürümlerinde olduğunu biliyor musunuz? Bazı insanlar için faydalı olabilir.
gronostaj


4

Aşağıdaki GPO'yu etkinleştirebilirsiniz:

Kullanıcı Yapılandırması \ Yönetim Şablonları \ Başlat Menüsü ve Görev Çubuğu \ Kabuk kısayollarını çözümlerken arama tabanlı yöntemi kullanmayın

karşılık gelen kayıt defteri anahtarı: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveSearch

Kullanıcı Yapılandırması \ Yönetim Şablonları \ Başlat Menüsü ve Görev Çubuğu \ Kabuk kısayollarını çözümlerken izleme tabanlı yöntemi kullanmayın

karşılık gelen kayıt defteri anahtarı:

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveTrack

Kullanıcı Yapılandırması \ Yönetim Şablonları \ Windows Bileşenleri \ Dosya Gezgini \ Dolaşım sırasında kabuk kısayollarını izlemeyin

karşılık gelen kayıt defteri anahtarı: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\LinkResolveIgnoreLinkInfo


GPO'yu nasıl etkinleştiririm? Kullanıcı Yapılandırmasını nerede bulabilirim?
Kyle Delaney

Windows 10'da Başlat düğmesine sağ tıklayabilirsiniz -> Çalıştır ve yaz: gpedit.msc -> Tamam'ı tıklattıktan sonra, Kullanıcı yapılandırmasını vb. Tür: DWORD, 1 değerinde)
Swisstone

Bir hata yaptım Windows, gpedit.msc dosyasını bulamadı.
Kyle Delaney

Tamam, anahtarları kayıt defterinde el ile oluşturmanız gerekir. Bunu nasıl yapacağınızı bilmiyorsanız, içe aktarabileceğiniz bir .reg dosyası oluşturdum: pastebin.com/KdPYFwff , içeriği ".reg" uzantısıyla bitmesi gereken yeni bir dosyaya kopyalayıp yapıştırın (değil. txt) ve üzerine çift tıklayın
Swisstone

Teşekkürler. Yaptım, bilgisayarımı yeniden başlattım ve kayıt defteri anahtarlarının şimdi regedit kullanarak yerinde olduğunu doğruladı. Kısayollar hala kendilerini günceller.
Kyle Delaney
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.