【问题标题】:Powershell in C# Get-Credential UIC# Get-Credential UI 中的 Powershell
【发布时间】:2023-01-09 19:58:40
【问题描述】:

我正在为 Windows C# 服务编写安装程序包装器。作为安装的一部分,我需要获取当前用户的凭据,或者让用户提供凭据。我需要使用 PowerShell 进行服务安装(使用 New-Service),但我需要提供凭据作为 PSCredential 对象。

这样的对象可以通过Get-Credentials返回,但我不能在不访问PS Host UI的情况下调用这个命令,我似乎无法做到这一点。

我可以用懒惰的方式做到这一点,然后弹出一个对话框询问用户名和密码,然后将它们塞进一个新的PSCredential,但这是非常糟糕的做法。

我也可以通过 CredUIPromptForWindowsCredentials 的方式通过 PInvoking 获取这些凭据,但同样,这非常笨拙,最终会在内存中产生一个我想避免的纯文本密码。

肯定有一些中间?我正在从 WPF 表单运行此交互,因此我可以愉快地向用户显示凭据对话框,但我不知道如何以明智的方式执行此操作。

如果有一种安全的方法来创建服务并通过当前登录的用户作为“运行方式”用户传递,那也很好。

任何意见,将不胜感激。

【问题讨论】:

    标签: c# powershell


    【解决方案1】:

    有点不清楚你想做什么。

    您是在 c# 代码中使用 powershell 还是仅在 powershell 中安装 c# 代码?
    您正在寻找 powershell 或 c# 中的解决方案吗?
    您是在寻求有关密码安全或安全服务创建的解决方案吗?

    此 (https://learn.microsoft.com/en-us/dotnet/api/system.security.securestring?view=net-7.0) c# 类:“表示应保密的文本,例如将其从不再需要时的计算机内存。无法继承此类。”

    我会将此 (https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/convertto-securestring?view=powershell-7.3) 用于 powershell。

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多