web-dev-qa-db-ja.com

「Persade」プログラムは、Windows 7で実際の.lnkファイルを開くにはどうすればよいですか?

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

プログラムが指すファイルの代わりに実際に.lnkファイルを開くをプログラムに指示する方法はありますか?

37
Jez

ショートカットを開く

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

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

ただし、リンクターゲットが読み込まれるか、実際のショートカットファイルが読み込まれるかは、プログラムによって異なります。ここにそれらをサポートするいくつかの無料の16進エディタのリスト(順不同)があります:


Workaround

ショートカットファイルのコンテンツを読み込めない場合は、 コマンドプロンプト を開き、.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

参考文献

19
and31415

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

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

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

LNKファイルを HxD hex editor で開く:

  • 開くダイアログを使用してファイルを開くのと同じようにそれらを開きます(FileOpen

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

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

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

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

.lnkファイルの要点は、Windowsが別のファイルへのリンクとして扱うことです。そのため、編集するのは困難です

なぜ編集したいのかを説明すると役立つでしょう。 .lnkファイルの設定を変更するには、右クリックしてPropertiesを選択します。

本当に編集したいなら、特別なツールが必要です。次のようなものがあります。

注:私はこれらのいずれも試していません。Googledで試してみました。

更新:

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

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

これはシェルCOMオブジェクトを使用するので、WSHまたはOfficeのVBAでもこれを実行できます。

8
Julian Knight

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

notepad.exe shortcut.lnk
4
Wes Sayeed

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

1
user1977596

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

私はこれを[〜#〜] frhed [〜#〜]でテストしました。これはフリーウェア(およびポータブル)の16進エディターです。コマンドラインから実行すると、リンクをパラメーターとして渡し、プロンプトが表示されます。 (はい)にリンクされたファイルを開くか、リンク自体(いいえ)、またはキャンセル

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

XP私は[〜#〜] frhed [〜#〜]を私のSendToコンテキストメニューに持っています。 [〜#〜] cmd [〜#〜]と同じように機能します。Win7は似ていると思います(専用アプリケーションにWin7システムを使用し、簡単なテストを行います)。上記のように、しかし私はその構成を台無しにしません)。

1
AFH

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

例えば。コマンドラインでMORE < foo.lnk::$DATA > conはデータを出力しますが、少し意味不明です(パーツはバイナリです)。

0
MSalters