我正在从基于WiX的安装程序安装桌面快捷方式(到批处理文件) – 如何在启用“以管理员身份运行”设置的情况下自动配置此快捷方式?目标操作系统是
Windows Server 2008 R2,安装程序正在使用提升的priveleges运行.
更新:
感谢@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); } }