无法以非管理员模拟用户身份运行 - 访问被拒绝

问题描述:

我在以管理员用户身份运行的应用(使用LogonUser(),DuplicateToken()WindowsIdentity.Impersonate()函数)中模拟非管理员用户帐户。由于此用户帐户是临时的,我还需要加载用户配置文件(使用LoadUserProfile()本机功能)。所有方法都能成功执行(没有设置最后一个错误),并且当前标识是预期的非管理用户。但是,当我尝试运行System.Diagnostics.Process.Start()的新进程时,出现错误:无法以非管理员模拟用户身份运行 - 访问被拒绝

访问被拒绝。

当我尝试手动执行与runas/profile/user相同的场景:mynonadmin用户,一切工作正常。

我在这里错过了什么?

跑到这一阵子后面。

模拟的用户无权访问在Process对象上设置的CWD。创建一个ProcessStartInfo对象并将工作目录设置为模拟用户有权访问的位置。