windows – 如何从启用了“以管理员身份运行”的基于WiX的安装程
发布时间:2020-12-14 04:16:46 所属栏目:Windows 来源:网络整理
导读:我正在从基于WiX的安装程序安装桌面快捷方式(到批处理文件) – 如何在启用“以管理员身份运行”设置的情况下自动配置此快捷方式?目标操作系统是 Windows Server 2008 R2,安装程序正在使用提升的priveleges运行. 更新: 感谢@Anders提供的链接,我能够让这个
我正在从基于WiX的安装程序安装桌面快捷方式(到批处理文件) – 如何在启用“以管理员身份运行”设置的情况下自动配置此快捷方式?目标操作系统是
Windows Server 2008 R2,安装程序正在使用提升的priveleges运行.
更新: 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);
编辑:Raymond在他的blog上有完整的示例代码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-8 – 在SuspensionManager.SessionState中存储字符
- 窗口 – 什么是Teredo隧道伪接口?
- NetCat 命令
- error记录 | 不能将参数 1 从“const char [5]”转换为“LP
- 字体 – 如何在Windows中启用字体抗锯齿
- Windows server 2016 搭建IIS(web)服务
- 如何在Azure App Service上部署Windows服务
- window+nginx+php环境配置 附配置搭配说明
- windows – 如何强制重启而不是关机(XP)
- windows-server-2008-r2 – 我可以使用Win 2k8 R2作为IPSEC