C# 以其他用户身份运行外部二进制文件
我正在测试一个小型实用程序。根据是否使用管理权限运行,它的行为会有所不同。因此,我的测试框架需要在有管理权限和无管理权限的情况下调用该程序,以检查其行为是否正确 测试框架是用C#编写的。我们的CI服务器将在每天午夜运行测试,因此弹出访问确认或类似消息是没有用的;那里不会有人按下按钮或输入凭证。如果可能的话,我希望避免存储管理员的密码 从哪里开始呢?看起来C# 以其他用户身份运行外部二进制文件,c#,security,C#,Security,我正在测试一个小型实用程序。根据是否使用管理权限运行,它的行为会有所不同。因此,我的测试框架需要在有管理权限和无管理权限的情况下调用该程序,以检查其行为是否正确 测试框架是用C#编写的。我们的CI服务器将在每天午夜运行测试,因此弹出访问确认或类似消息是没有用的;那里不会有人按下按钮或输入凭证。如果可能的话,我希望避免存储管理员的密码 从哪里开始呢?看起来ProcessStartInfo可以接受用户名、域和密码,但这需要将管理员密码编译到测试框架中。(这样可以在多台电脑上运行!)我也看到过一些答案
ProcessStartInfo
可以接受用户名、域和密码,但这需要将管理员密码编译到测试框架中。(这样可以在多台电脑上运行!)我也看到过一些答案,其中涉及到WindowsIdentity
和模拟-但这似乎是为了更改当前进程的用户ID,而不是我试图调用的外部进程。这是怎么回事:
- 您的测试框架希望通过命令行参数获得管理员权限的用户名/密码
- 您的CI服务器使用参数调用它-至少在那里您必须存储密码。任何非交互式解决方案都需要将密码存储在某个位置
- 您的测试框架将使用ProcessStartInfo生成应用程序
BR Florian您可以将密码存储在您的CI工具中,然后将其传递给测试并在ProcessStartInfo中使用,例如,在TeamCity 7中有