【问题标题】:Run external binary as a different user以其他用户身份运行外部二进制文件
【发布时间】:2014-01-14 10:55:29
【问题描述】:

我正在测试一个小型实用程序。它的行为会有所不同,具体取决于它是否以管理权限运行。因此,我的测试框架需要在有和没有管理员权限的情况下调用程序,以检查它的行为是否正确。

测试框架是用 C# 编写的。我们的 CI 服务器将在每天午夜运行测试,因此弹出访问确认或类似内容是不好的;不会有人在那里按下按钮或输入凭据。如果可能,我希望避免存储管理员密码。

我从哪里开始?看起来ProcessStartInfo 可以使用用户名、域和密码——但这需要将管理员密码编译到测试框架中。 (就像 that 可以在不止一台 PC 上运行!)我还看到了一些关于 WindowsIdentity 和模拟的答案 - 但这似乎是为了更改 的用户 ID当前进程,而不是我试图调用的外部进程。

【问题讨论】:

  • 您可以将密码存储在 CI 工具中,然后将其传递给测试并在 ProcessStartInfo 中使用,例如在 TeamCity 7 中有 password parameter

标签: c# security


【解决方案1】:

这个呢:

  • 您的测试框架需要通过命令行参数提供管理员权限的用户名/密码
  • 您的 CI 服务器使用参数调用它 - 至少您必须在那里存储密码。任何非交互式解决方案都需要在某处存储密码
  • 您的测试框架将使用 ProcessStartInfo 生成应用程序。

至少密码不再存储在代码中,这样可以更好地管理并且不会将其泄露到管理员的范围之外;)

BR弗洛里安

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2010-11-13
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多