我正在测试一个小型实用程序。它的行为会有所不同,具体取决于它是否以管理权限运行。因此,我的测试框架需要在具有和不具有管理员权限的情况下调用该程序,以检查其行为是否适当。
测试框架是用 C# 编写的。我们的 CI 服务器会在每天午夜运行测试,所以弹出访问确认或类似信息是不好的;不会有人在那里按下按钮或输入凭据。如果可能,我希望避免存储管理员密码。
我从哪里开始呢?看起来 ProcessStartInfo
可以接受用户名、域和密码——但这需要将管理员密码编译到测试框架中。 (就像 that 将在不止一台 PC 上工作!)我也看到了一些关于 WindowsIdentity
和模拟的答案 - 但这似乎是为了改变用户 ID 当前进程,而不是我尝试调用的外部进程。
最佳答案
这个怎么样:
- 您的测试框架需要通过命令行参数获得管理员权限的用户名/密码
- 您的 CI 服务器使用参数调用它 - 至少您必须在那里存储密码。任何非交互式解决方案都需要在某处存储密码
- 然后您的测试框架将使用 ProcessStartInfo 生成应用程序。
至少密码不再存储在代码中,这使得它更好地管理并且不会泄露到管理员的范围之外;)
BR 弗洛里安
关于c# - 以不同用户身份运行外部二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111789/