Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以其他用户身份运行外部二进制文件_C#_Security - Fatal编程技术网

C# 以其他用户身份运行外部二进制文件

C# 以其他用户身份运行外部二进制文件,c#,security,C#,Security,我正在测试一个小型实用程序。根据是否使用管理权限运行,它的行为会有所不同。因此,我的测试框架需要在有管理权限和无管理权限的情况下调用该程序,以检查其行为是否正确 测试框架是用C#编写的。我们的CI服务器将在每天午夜运行测试,因此弹出访问确认或类似消息是没有用的;那里不会有人按下按钮或输入凭证。如果可能的话,我希望避免存储管理员的密码 从哪里开始呢?看起来ProcessStartInfo可以接受用户名、域和密码,但这需要将管理员密码编译到测试框架中。(这样可以在多台电脑上运行!)我也看到过一些答案

我正在测试一个小型实用程序。根据是否使用管理权限运行,它的行为会有所不同。因此,我的测试框架需要在有管理权限和无管理权限的情况下调用该程序,以检查其行为是否正确

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

从哪里开始呢?看起来
ProcessStartInfo
可以接受用户名、域和密码,但这需要将管理员密码编译到测试框架中。(这样可以在多台电脑上运行!)我也看到过一些答案,其中涉及到
WindowsIdentity
和模拟-但这似乎是为了更改当前进程的用户ID,而不是我试图调用的外部进程。

这是怎么回事:

  • 您的测试框架希望通过命令行参数获得管理员权限的用户名/密码
  • 您的CI服务器使用参数调用它-至少在那里您必须存储密码。任何非交互式解决方案都需要将密码存储在某个位置
  • 您的测试框架将使用ProcessStartInfo生成应用程序
至少密码不再存储在代码中,这样可以更好地进行管理,并且不会泄露到管理员的范围之外;)


BR Florian

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