我在LocalSystem以外的用户帐户下运行Windows服务,假设用户 mydomain \ svcUser 。
该服务使用 Process.Start(...)生成新流程 P 。进程P使用在用户 mydomain \ procUser 下定义的默认Outlook配置文件。工作正常。
现在,我需要在新用户下生成相同的进程 P : mydomain \ procUser ,它基本上具有与 mydomain \ svcUser相同的权限
我在使用LogonUser获取令牌后尝试以多种方式使用CreateProcessAsUser,但它只是不起作用。
现在,如果我将流程的“登录”用户更改为 mydomain \ procUser ,则生成的流程 P 具有正常运行所需的所有权限和环境。
我很遗憾如何将要传递给LogonUser和CreateProcessAsUser的参数组合在一起,以便我能够在 mydomain \ svcUser 下保持服务运行,但是生成的进程 P 在 mydomain \ procUser 下正常工作。
此链接非常有用,但它只是一篇很棒的指南文章,成功取决于在调用LogonUser和CreateProcessAsUser时如何使用标记和其他内容。
答案 0 :(得分:0)
使用接收用户凭据的Process.Start的重载
public static Process Start(
string fileName,
string userName,
SecureString password,
string domain
)
请参阅here