मैं किसी Windows शॉर्टकट को उसके पथ को अपडेट करने से कैसे रोकूं?


24

मेरे उत्पाद को विकसित करते समय, मेरे परीक्षण उपकरण में एक ही समय में इंस्टॉल किए गए एप्लिकेशन के कई संस्करण हैं। हालाँकि, मेरे आवेदन को काम करने के लिए उपयोग करने वाले निरपेक्ष पथों को प्राप्त करने के लिए, मुझे उन फ़ोल्डरों को बदलने या उनका नाम बदलने की आवश्यकता है, ताकि मैं जिस संस्करण का परीक्षण करना चाहता हूं उसका सही मार्ग हो, कहते हैं C:\Program Files\My Company\My App\My App.exe। मैंने एक शॉर्टकट बनाया है जो इस पथ को लक्षित करता है, लेकिन यदि यह शॉर्टकट तब खोला जाता है जब किसी भी संस्करण में वर्तमान में वह पथ नहीं है तो शॉर्टकट स्वतः ही अपडेट हो जाएगा, यह सोचकर कि फ़ाइल स्थायी रूप से चली गई है। यह तब तक मौन विफलताओं का कारण बना जब तक मुझे पता नहीं चला कि क्या हो रहा है। मुझे नहीं पता था कि यह विंडोज शॉर्टकट का एक फीचर था।

इसलिए मेरा प्रश्न सरल है। क्या इस सुविधा को बंद करने का कोई तरीका है? वैश्विक रूप से अच्छा है, लेकिन प्रति-शॉर्टकट समाधान बेहतर होगा।

शॉर्टकट के बजाय बैच फ़ाइल का उपयोग करना एक समाधान है, लेकिन मैं सोच रहा हूं कि क्या शॉर्टकट का उपयोग करते समय इस काम को करने का कोई तरीका है।

मैं विंडोज 10 होम और विंडोज 7 होम का उपयोग कर रहा हूं।


10
अतीत में मैंने जो किया है वह .batएक साधारण कमांड के साथ बैच फ़ाइल ( ) का उपयोग करना है , जैसे start "" "C:\path\to\file.exe"
बॉब

1
क्या आपने mklinkएक .lnkफ़ाइल के बजाय एक प्रतीकात्मक लिंक ( कमांड का उपयोग करके ) बनाने की कोशिश की है ? या क्या वे भी अपडेट हो जाते हैं?
JAB

1
@JAB सिम्बल को अपडेट नहीं किया जाना चाहिए, लेकिन इसके कुछ नुकसान हैं (व्यवस्थापक निजी की आवश्यकता है, तर्क पारित नहीं कर सकते, आदि)। हालांकि वे अच्छी तरह से काम करते हैं अगर वे एक समस्या नहीं हैं।
बॉब

3
मैंने सोचा था कि शॉर्टकट केवल पढ़ने के लिए काम करेगा (मुझे यकीन है कि इसका उपयोग किया गया था) लेकिन परीक्षण करने के बाद मुझे लगता है कि यह नहीं है। ऐसा इसलिए है क्योंकि शॉर्टकट फिर से नहीं लिखा गया है; शॉर्टकट मिलने पर लक्ष्य पाया जाता है। बस इसलिए कोई और कोशिश नहीं करता।
क्रिस एच।

1
@PetSerAl जैसा कि मैंने ऊपर कहा, यह काम नहीं करता है।
क्रिस एच।

जवाबों:


13

आप PowerShell का उपयोग कर सकते हैं! यह छोटी स्क्रिप्ट एलएनके फ़ाइल को क्लासिक shortcutउपयोगिता का उपयोग करने के समान प्रभाव देने के लिए तैयार करती है ।

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

इसका उपयोग करने के लिए, उस पाठ को .ps1फ़ाइल के रूप में सहेजें , जैसे notrack.ps1। यदि आप पहले से ही नहीं है, तो PowerShell टैग विकी के सक्षम अनुभाग में दिए गए निर्देशों का पालन करें । तब आप इसे PowerShell प्रॉम्प्ट से चला सकते हैं:

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

इस तरह से घुमाए जाने वाले शॉर्टकट जब उनके लक्ष्य की ओर बढ़ते हैं तो वे नहीं बदलेंगे। यदि इस तरह का एक शॉर्टकट टूट जाता है, तो जब आप इसे खोलने की कोशिश करते हैं तो कुछ भी नहीं होता है।

मैंने अपनी स्क्रिप्ट में उपयोग किए गए बाइनरी गणित को LNK प्रारूप पर 48-पृष्ठ Microsoft पीडीएफ से इकट्ठा किया ।


25

सेवा रोकें और अक्षम करें: वितरित लिंक ट्रैकिंग क्लाइंट (TrkWks)।

वितरित लिंक ट्रैकिंग उन परिदृश्यों में लिंक को ट्रैक करता है जहां लिंक NTFS वॉल्यूम पर फ़ाइल से बना है, जैसे शेल शॉर्टकट। यदि उस फ़ाइल का नाम बदला जाता है, तो उसी कंप्यूटर पर किसी अन्य वॉल्यूम में ले जाया जाता है, किसी अन्य कंप्यूटर पर स्थानांतरित किया जाता है, या अन्य समान परिदृश्यों में स्थानांतरित किया जाता है, तो फ़ाइल खोजने के लिए Windows डिस्ट्रीब्यूटेड लिंक ट्रैकिंग का उपयोग करता है।

स्रोत: वितरित लिंक ट्रैकिंग - Microsoft समर्थन


अच्छा विचार है, लेकिन उल्लेखनीय रूप से यह काम नहीं किया। जब पथ एक निर्देशिका लंबा था तब भी शॉर्टकट को फ़ाइल मिल गई।
काइल डेलाने

क्या आप सुनिश्चित हैं कि सेवा बंद कर दी गई है? DLTC सेवा को रोकने के बाद, मैंने निष्पादन योग्य को स्थानांतरित या नाम दिया। जब मैंने शॉर्टकट चलाया, तो मुझे एक "प्रॉब्लम विद शॉर्टकट" त्रुटि मिली और कहा कि टारगेट गायब है और शॉर्टकट को हटाने के लिए प्रेरित कर रहा है।
स्टीवन

10
"सही लक्ष्य ढूंढें" कार्यक्षमता विंडोज 9x श्रृंखला में वापस मिलती है, और विंडोज के एनटी संस्करणों को पूर्व निर्धारित करती है। DLT विंडोज 9x पर मौजूद नहीं था। यह कहना नहीं है कि डीएलटी अप्रासंगिक है; विंडोज़ डीएलटी का उपयोग करेगा यदि वह शॉर्टकट लक्ष्य खोजने में मदद करता है।
MSalters

2
@ हां, मुझे यकीन है कि सेवा बंद है। विंडोज 10 में, मैं सर्विसेज में गया, डिस्ट्रीब्यूटेड लिंक ट्रैकिंग क्लाइंट पाया, स्टॉप बटन पर क्लिक किया, अपने कंप्यूटर को रीस्टार्ट किया और फिर से सर्विस को चेक किया। प्रारंभ बटन है और सेवा चल रही नहीं कहती है। शॉर्टकट अभी भी खुद को अपडेट करते हैं।
काइल डेलानी

8

shortcut.exeकमांड विकल्प का उपयोग करें -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
अफसोस की बात है, शॉर्टकट। अब आसानी से उपलब्ध नहीं है।
डैनियल बी

@DanielB आप सही कह रहे हैं, मैं भूल गया हूँ कि मैंने Windows के कुछ संस्करणों पर shortcut.exe को बचाया है।
सनजी

2
@ डैनियल क्या आप जानते हैं कि विंडोज के कौन से संस्करण हैं? यह कुछ लोगों के लिए उपयोगी हो सकता है।
ग्रोनोस्तज


4

आप निम्न GPO को सक्षम कर सकते हैं:

उपयोगकर्ता कॉन्फ़िगरेशन \ व्यवस्थापकीय टेम्पलेट \ स्टार्ट मेनू और टास्कबार \ _ शेल शॉर्टकट को हल करते समय खोज-आधारित पद्धति का उपयोग न करें

संबंधित रजिस्ट्री कुंजी: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoResolveSearch

उपयोगकर्ता कॉन्फ़िगरेशन \ व्यवस्थापकीय टेम्पलेट \ स्टार्ट मेनू और टास्कबार \ _ शेल शॉर्टकट को हल करते समय ट्रैकिंग-आधारित पद्धति का उपयोग न करें

संबंधित रजिस्ट्री कुंजी:

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

उपयोगकर्ता कॉन्फ़िगरेशन \ व्यवस्थापकीय टेम्पलेट \ Windows घटक \ फ़ाइल एक्सप्लोरर \ रोमिंग के दौरान शेल शॉर्टकट ट्रैक नहीं करते हैं

संबंधित रजिस्ट्री कुंजी: HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\LinkResolveIgnoreLinkInfo


मैं GPO कैसे सक्षम करूं? मुझे उपयोगकर्ता कॉन्फ़िगरेशन कहां मिलेगा?
काइल डेलाने

विंडोज़ 10 पर आप प्रारंभ बटन पर राइट क्लिक कर सकते हैं -> चलाएं और लिखें: gpedit.msc -> ठीक पर क्लिक करें, फिर आप उपयोगकर्ता कॉन्फ़िगरेशन, आदि को खोजने में सक्षम होंगे ... या आप उन रजिस्ट्री कुंजियों को बना सकते हैं जिन्हें मैंने निर्दिष्ट किया था ( टाइप करें: DWORD, 1 के मान के साथ)
Swisstone

मुझे एक त्रुटि मिली। Windows gpedit.msc नहीं ढूँढ सका।
काइल डेलाने

ठीक है, इसलिए आपको रजिस्ट्री में मैन्युअल रूप से कुंजियाँ बनानी होंगी। यदि आप यह नहीं जानते कि ऐसा कैसे किया जाए, तो मैंने एक .reg फ़ाइल बनाई जिसे आप आयात कर सकते हैं: pastebin.com/KdPYFwff केवल एक नई फ़ाइल में उस सामग्री को कॉपी-पेस्ट करें जिसे ".reg" एक्सटेंशन के साथ समाप्त होना चाहिए (नहीं। txt) और उस पर डबल क्लिक करें
Swisstone

धन्यवाद। मैंने यह किया, अपने कंप्यूटर को फिर से शुरू किया, और सत्यापित किया कि रजिस्ट्री कुंजी अब regedit का उपयोग कर रही थीं। शॉर्टकट अभी भी खुद को अपडेट करते हैं।
काइल डेलाने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.