هل هناك طريقة لحل هدف .LNK يعمل مع الروابط التي تنتهي في C: Windows Installer؟

StackOverflow https://stackoverflow.com/questions/964444

سؤال

الطريقة المعتادة لحل LNK تنطوي على استخدام Wshell.wshortcutut أو Ishelllink بهذه الطريقة:

var WshShell = WScript.CreateObject("WScript.Shell");
var oShellLink = WshShell.CreateShortcut(strDesktop + "\\some-shortcut.lnk");
WScript.Echo(oShellLink.TargetPath)

ولكن هناك روابط لا يمكن حلها بهذه الطريقة: ينتهي القرار في C: Windows Installer {بعض guid} python_icon.exe علي سبيل المثال. معظم برامج Office لديها هذه المشكلة أيضا.

يحتوي CodeProjjject على حل آخر يتم القيام به الهندسة العكسية بتنسيق LNK http://www.codeproject.com/kb/shell/readlnkfile.aspx. لكنه لا يعمل في توسيس الحالات.

هل هناك أي طريقة أخرى ؟

ما هو مجلد C: Windows Installer هذا؟ وما هو هذا seacle_icon.exe الذي يتم وضعه فيه؟

هل كانت مفيدة؟

المحلول

حسنا لقد وجدت الحل هنا: 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. يحتوي على المسار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top