c:\windows\installer にあるリンクに対して機能する .lnk ターゲットを解決する方法はありますか?
-
12-09-2019 - |
質問
lnk を解決する通常の方法には、WShell.WshShortcut または IShellLink を使用することが含まれます。
var WshShell = WScript.CreateObject("WScript.Shell");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\some-shortcut.lnk");
WScript.Echo(oShellLink.TargetPath)
ただし、その方法では解決できないリンクがあります。解像度は最終的に c:\windows\installer\{some-guid}\python_icon.exe 例えば。ほとんどの Office プログラムにもこの問題があります。
CodeProject には、lnk 形式をリバース エンジニアリングすることによって行われる別の解決策があります。 http://www.codeproject.com/KB/shell/ReadLnkFile.aspx しかし、そのような場合には機能しません。
他に方法はありますか?
この c:\Windows\Installer フォルダーとは何ですか?そしてその中に置かれているsomething_icon.exeとは何でしょうか?
解決
OK、ここで解決策を見つけました: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/2df18f93-77d8-4217-94a1-6cbe5333a6c4
これらの lnk は MSI lnk であるため、パスを解決するには Msi 関数を使用する必要があります。
TCHAR pc [50] = {0};
TCHAR feat [100] = {0};
TCHAR comp [50] = {0};
int b=MsiGetShortcutTarget("Python (command line).lnk",pc,feat,comp);
TCHAR pth [500] = {0};
DWORD chs = 500;
int i = MsiGetComponentPath (pc, comp, pth, &chs);
pth パスが含まれています。
所属していません StackOverflow