Windows 7でプログラムが実際の.lnkファイルを「説得」する方法を教えてください。


37

.lnkWindows のファイルは、別のファイルへのショートカットを目的とした実際のファイルです。ただし、.lnkファイル自体の内容を表示したいのです。私はそうすることは文字通り不可能だと思っています。私が何をしようとしても、アプリケーションはそれが指すファイルの内容を開いています(テキストまたは16進エディターにドラッグ/ドロップ、ファイル|テキストまたは16進エディターから開くなど)

プログラムが指すファイルではなく、実際に.lnkファイルを開くようにプログラムに指示する方法はありますか?


3
名前はいつでも.txtなどに変更できます。通常、これによりデータが失われることはありません。
ジョン14年

1
@Chipperymanそれが機能しないことを除いて。.lnk新しい拡張子を持つファイルの名前を簡単に変更することはできません。
287352 14年

回答:


19

ショートカットを開く

ショートカットを編集するには、明らかに最初にショートカットを開く必要がありますが、これには注意が必要です。では、いくつかの例は、コマンドライン引数を使用してロードのショートカットファイルにプログラムを強制することができます:

"X:\Path\to\program.exe" "X:\my shortcut.lnk"

ただし、リンクターゲットと実際のショートカットファイルのどちらが読み込まれるかは、プログラムによって異なります。すぐに使用できる無料の16進エディタのリスト(順不同)を次に示します。


回避策

ショートカットファイルのコンテンツをロードできない場合は、コマンドプロンプトを開き、.lnkファイルの名前を次のような存在しない別の拡張子に変更できます.lne

cd /d "X:\Folder\containing\shortcuts"
ren "my shortcut.lnk" "my shortcut.lne"

複数のファイルがある場合は、それらすべてを一度に名前変更することもできます。

ren *.lnk *.lne

これにより、これらのショートカットを通常のファイルと同様に扱うことができます。完了したら、必ずそれらの名前を変更して、通常の機能を復元してください。


追加情報

ショートカットまたはシェルリンクには、特定のリンクターゲットへのアクセスに使用されるメタデータ情報が含まれています。Windowsシェルによって解析および解釈されます。公式文書から:

シェルリンク構造には、次のようなエンドユーザーに役立つさまざまな情報が格納されます。

  • アプリケーションの起動に使用できるキーボードショートカット。

  • 説明的なコメント。

  • アプリケーションの動作を制御する設定。

  • 追加のデータセクションに格納されるオプションのデータ。

ソース:[MS-SHLLINK]:シェルリンク(.LNK)バイナリファイル形式-概要

ショートカットはバイナリファイルとして保存され、標準のテキストエディターを使用して編集することはできません。.lnk内部的には、典型的なファイルは次のようになります。

00000000  4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00  L...........À...
00000010  00 00 00 46 DC 03 00 02 20 00 00 00 C6 EF 52 BE  ...FÜ... ...ÆïR¾
00000020  10 04 CA 01 C6 EF 52 BE 10 04 CA 01 60 45 8A 67  ..Ê.ÆïR¾..Ê.`EŠg
00000030  20 04 CA 01 00 9A 04 00 00 00 00 00 01 00 00 00   .Ê..š..........

最初の20バイトは常に次のものです。

4C 00 00 00 01 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46

参考文献


HxDを使用してFile | Open実際に開くには、.lnkファイルを開いているようです。ありがとう。
ジェズ14年

@Jez投稿を更新して、追加情報を追加しました。さらに質問がある場合はお知らせください。
および31415 14年

16

私はこれを試してみましたが、Windows 8.1で動作します:

LNKメモ帳でファイルを開く:

  • それらをメモ帳ウィンドウにドラッグアンドドロップするだけです。Openダイアログからそれらを開くと、メモ帳はそのEXEファイルが指すファイルを開きLNKます。

オープニングLNKでファイルをHXDのバイナリエディタ

  • [開く]ダイアログ(FileOpen)を使用して、任意のファイルと同様にそれらを開きます。

LNKコマンドプロンプトを使用してファイルを開く:

  • LNKファイルを含むフォルダーに移動し、次のコマンドを入力します。 TYPE SHORTCUTNAME.LNK

LNKほぼすべてのプログラムでファイルを開く:

  • コマンドプロンプトを起動し、プログラムがあるフォルダーに移動して、次のコマンドを使用します。 PROGRAM_NAME.EXE "path to LNK file"

8

.lnkファイルの要点は、Windowsがそれを別のファイルへのリンクとして扱うことなので、編集が難しいはずです!

おそらく、編集したい理由を説明しておくと役立つでしょう。.lnkファイルの設定を変更するには、右クリックして[ プロパティ ]を選択します

本当に編集したい場合、特別なツールが必要です。以下を含むこれらのいくつかがあります。

NB:私はこれらのいずれも試しませんでした、ただグーグルで検索しました。

更新:

なぜこれを考えなかったのかはわかりませんが、PowerShellを使用してプロパティを編集できます。スタックオーバーフローに関するこの前の回答から:

Copy-Item $sourcepath $destination  ## Get the lnk we want to use as a template
$shell = New-Object -COM WScript.Shell
$shortcut = $shell.CreateShortcut($destination)  ## Open the lnk
$shortcut.TargetPath = "C:\path\to\new\exe.exe"  ## Make changes
$shortcut.Description = "Our new link"  ## This is the "Comment" field
$shortcut.Save()  ## Save

これはShell COMオブジェクトを使用するため、OfficeのWSHまたはVBAを使用してこれを行うこともできます。


2
破損している可能性があり、Explorerがその内容を適切に教えてくれるとは思わないので、できれば16進エディタでその内容を編集します。
ジェズ14年

それを再現することは当時だと思いますか?もしそうなら、エディターのいずれかを試してください。何が破損したのかはわかりません。
ジュリアンナイト14年

1
まあ、少なくともWindows XPで編集するのは難しいことではありませんでした。実際、プログラムにそれをシンボリックリンクと同様に扱うよう説得することはより困難でした。editショートカットへのパスの引数を使用してコンソールアプリを実行すると、ショートカットファイルが開きます。ショートカットをシンボリックリンクと同様に処理するプログラムは、それ自体を解析します(シェル関数を使用する場合があります)。Windowsは、XPの後にショートカットのように見えるシンボリックリンクを使用することに頼りましたか?
ルスラン14年

進歩の代償!ほとんどのアプリが無視するリンクを定義するメカニズムを持つことはあまり意味がありません。.lnkを直接編集する必要がある多くの理由はわかりません。
ジュリアンナイト14年

3
@JulianKnight私は、インデックスとして機能するフォルダーに配置するためにプログラムでそれらを生成するために一度使用しました。私はソフトウェアをインストールする権利を仮定する必要はありませんでしたが、すでにVBAを使用していました。テンプレート.lnkの変更は、テンプレートを最初から生成するよりも簡単であることがわかりました。
クリスH 14年

4

.LNKファイルはシェルによって解釈されます。コマンドプロンプトを開き、.LNKファイルを引数として使用して編集ツール(たとえば、メモ帳など)を呼び出すと、シェルをバイパスして.LNKファイル自体の内容を開く必要があります。

notepad.exe shortcut.lnk

いいえ、動作しません。それが.lnk指すファイルを開きます。
ジェズ14年

どのアプリケーションでリンクを開こうとしていますか?
ウェスサイード14年

3
それは間違っています。私はこの答えを試しましたが、うまくいきます。
ビナヤック14年

3
@Vinayakそれはかなり大胆な声明です。使用している状況では機能するかもしれませんが、Jezには機能しない可能性があります。
ジョン14年

1

CMDを使用して、リンクファイルをパラメーターとして使用してプログラムを実行する場合、そのパラメーターは逐語的にプログラムに渡されます。リンクの処理方法を決定するのはプログラム次第です。

これをフリーウェア(およびポータブル)の16進エディタであるFRHEDでテストしました:コマンドラインから実行し、パラメーターとしてリンクを渡すと、リンクされたファイル(Yes)、リンク自体を開くかどうかを尋ねられます(いいえ)、またはキャンセル

奇妙なことに、[ FRHEDファイル]メニュー内で[開く] を使用すると、確認せずにターゲットファイルが開きます。

XPでは、SendToコンテキストメニューにFRHEDがあり、CMDと同じように機能します。Win7は似ていると思います(専用アプリケーションにWin7システムを使用し、上記のように簡単なテストを行いますが、その構成を台無しにしません)。


1
Windowsがプロンプトを出すわけではありません。何をすべきかを尋ねFrhedだということ
ビニャーヤク

まったく正しい:愚かなこと-答えを変えます。
AFH 14年

メニューにメモ帳を置くSendToと非常に便利で、メモ帳で任意のファイル(ショートカットを含む)を開くことができます。
スコット14年

最終(?)観察:DOSベースのビューまたは編集プログラムは常にリンクを開きます。DOSファイルを開く関数はリンクについて何も認識しないため、Windowsファイルを開くとは異なり、特別な処理を行いません。 。
AFH 14年

1

このようなファイルを頻繁に編集する理由がある場合は、notepad.exeへのショートカットをSendToフォルダーに追加します(Win 7の場合:C:\ Users \ USER \ AppData \ Roaming \ Microsoft \ Windows \ SendTo)。これにより、Rtから「notepad.exeに送信」が使用可能になります。コンテキストメニューをクリックします。.inkファイルが開き、編集してnotepad.exeに保存できます。


0

.lnkファイルは、Explorer.EXEなどの高レベルのコンポーネントがそれらにマニングを割り当てるまでの単なるファイルです。下位(NTFS)レベルでは、データストリームを含む通常の構造のままです。特に、コンテンツ全体がfoo.lnk::$DATAストリーム内にあります。すべての上位レベルのツールがその構文を認識するわけではありません。奇妙なファイル名だと思って渡すと、.lnkの内容を取得します。

たとえば、コマンドラインでMORE < foo.lnk::$DATA > conデータを出力しますが、少し意味がありません(一部はバイナリです)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.