我有一个MSI安装程序自定义操作,调用Process.Start()
来运行批处理文件,该文件在内部执行大量操作,最后调用iisreset
。但在少数计算机上,这是失败的,访问被拒绝错误。有趣的是,运行MSI的用户可以从命令提示符执行iisreset
。它只在通过我的进程执行时失败。
所以我想知道,Process.Start()
产生新流程作为当前用户的权限较少吗?如果是,我该怎么说以用户拥有的所有权限运行同一个用户?任何人都可以帮助我更好地理解这一点,并诊断为什么会失败。
MSI created using : Visual Studio 2008
Server : Windows Server 2008
UAC Status : Off
错误消息
重启尝试失败。拒绝访问, 你必须是该的管理员 远程计算机使用此命令。 将您的帐户添加到 管理员本地组 远程计算机或域 管理员全球组
任何帮助将不胜感激。
答案 0 :(得分:2)
您应在自定义操作上设置msidbCustomActionTypeNoImpersonate标记(0x800
),以避免出现与最新Windows系统的用户访问控制功能有关的问题。
有关详细信息,请参阅this blog。