c# - 以不同用户身份运行外部二进制文件

标签 c# security

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

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

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

最佳答案

这个怎么样:

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

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

BR 弗洛里安

关于c# - 以不同用户身份运行外部二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111789/

相关文章:

c# - 如何更改 TabControl 中所选选项卡的颜色?

c# - 帮助处理字符串的 C# 条件语句

php - 如何防止 PHP 中的 SQL 注入(inject)?

.net - 限制对应用程序中对象的访问

linux - 我们如何存储明文以外的密码?

c# - 文件结果找不到文件

c# - C# : How to Maximize Parallelism 中的并行分区算法

c# - ASP.NET Web 窗体中的 ASMX Web 服务路由

c# - 序列化和散列

javascript - 如何检测是否在我的页面中注入(inject)了不需要的 chrome 内容脚本?