Process.Start()和用户模拟

时间:2011-03-11 16:51:39

标签: c# .net iis windows-installer custom-action

我有一个MSI安装程序自定义操作,调用Process.Start()来运行批处理文件,该文件在内部执行大量操作,最后调用iisreset。但在少数计算机上,这是失败的,访问被拒绝错误。有趣的是,运行MSI的用户可以从命令提示符执行iisreset。它只在通过我的进程执行时失败。

所以我想知道,Process.Start()产生新流程作为当前用户的权限较少吗?如果是,我该怎么说以用户拥有的所有权限运行同一个用户?任何人都可以帮助我更好地理解这一点,并诊断为什么会失败。

MSI created using : Visual Studio 2008
Server : Windows Server 2008
UAC Status : Off

错误消息

  

重启尝试失败。拒绝访问,   你必须是该的管理员   远程计算机使用此命令。   将您的帐户添加到   管理员本地组   远程计算机或域   管理员全球组

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您应在自定义操作上设置msidbCustomActionTypeNoImpersonate标记(0x800),以避免出现与最新Windows系统的用户访问控制功能有关的问题。

有关详细信息,请参阅this blog