如何从启用了“以pipe理员身份运行”的基于WiX的安装程序安装桌面快捷方式(到batch file)?

我正在从基于WiX的安装程序安装桌面快捷方式(到batch file) – 如何使用“以pipe理员身份运行”设置启用自动configuration此快捷方式? 目标操作系统是Windows Server 2008 R2,并且安装程序正在升级。

更新:
感谢@Anders提供的链接,我能够得到这个工作。 我需要在C#CustomAction中这样做,所以这里是C#版本的代码:

namespace CustomAction1 { public class CustomAction1 { public bool MakeShortcutElevated(string file_) { if (!System.IO.File.Exists(file_)) { return false; } IPersistFile pf = new ShellLink() as IPersistFile; if (pf == null) { return false; } pf.Load(file_, 2 /* STGM_READWRITE */); IShellLinkDataList sldl = pf as IShellLinkDataList; if (sldl == null) { return false; } uint dwFlags; sldl.GetFlags(out dwFlags); sldl.SetFlags(dwFlags | 0x00002000 /* SLDF_RUNAS_USER */); pf.Save(null, true); return true; } } [ComImport(), Guid("00021401-0000-0000-C000-000000000046")] public class ShellLink { } [ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("45e2b4ae-b1c3-11d0-b92f-00a0c90312e1")] interface IShellLinkDataList { void AddDataBlock(IntPtr pDataBlock); void CopyDataBlock(uint dwSig, out IntPtr ppDataBlock); void RemoveDataBlock(uint dwSig); void GetFlags(out uint pdwFlags); void SetFlags(uint dwFlags); } } 

我猜你会需要一个自定义的动作,并调用自己的COM接口。 为IShellLinkDataList查询IShellLink(或IPersistFile?),然后: IShellLinkDataList->SetFlags(orgFlagsFromGetFlags|SLDF_RUNAS_USER);

编辑:雷蒙德在他的博客上有完整的示例代码