私の製品を開発している間、私のテストデバイスには複数のバージョンのアプリケーションが同時にインストールされています。ただし、アプリケーションが機能するために使用している絶対パスを取得するには、フォルダーを切り替えるか、名前を変更して、テストするバージョンに正しいパス、たとえばC:\Program Files\My Company\My App\My App.exe
を設定する必要があります。このパスをターゲットとするショートカットを作成しましたが、現在そのパスを持つバージョンがないときにこのショートカットを開くと、ファイルが完全に移動したと見なされて、ショートカットは自動的に更新されます。何が起こっているのかを発見するまで、これはサイレント障害を引き起こしました。これがWindowsショートカットの機能であることを今まで知りませんでした。
だから私の質問は簡単です。この機能をオフにする方法はありますか?全体的には良いですが、ショートカットごとのソリューションの方が良いでしょう。
ショートカットの代わりにバッチファイルを使用することは1つの解決策ですが、ショートカットを使用しながらこれを機能させる方法はあるのでしょうか。
Windows 10 HomeとWindows 7 Homeを使用しています。
PowerShellを使用できます。この小さなスクリプトはLNKファイルを破壊して、従来の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タグwiki のスクリプトの有効化セクションの手順に従ってください。次に、PowerShellプロンプトから実行できます。
.\notrack.ps1 C:\path\to\my\shortcut.lnk
このように調整されたショートカットは、ターゲットが移動しても変更されません。このようなショートカットが壊れた場合、それを開こうとしても何も起こりません。
スクリプトで使用されているバイナリ数学を この48ページのMicrosoft PDF )から収集しました。
サービスを停止して無効にします:分散リンクトラッキングクライアント(TrkWks)。
分散リンクトラッキングは、シェルショートカットなど、NTFSボリューム上のファイルへのリンクが作成されるシナリオでリンクを追跡します。そのファイルの名前を変更したり、同じコンピューター上の別のボリュームに移動したり、別のコンピューターに移動したり、他の同様のシナリオで移動したりすると、Windowsは分散リンクトラッキングを使用してファイルを見つけます。
使用 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
次の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