我正在从基于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);
- }
- }