将凭据添加到与本地系统帐户不同的帐户
Posted
技术标签:
【中文标题】将凭据添加到与本地系统帐户不同的帐户【英文标题】:Adding Credentials to diffrent account from local system account 【发布时间】:2019-10-24 10:35:20 【问题描述】:使用章鱼进行部署,触手作为“本地系统帐户”运行我希望触手为不同的帐户添加凭据。但是我没有运气这样做。
到目前为止,我尝试创建一个 c# 程序,它以其他用户身份启动一个新进程,并调用 cmdkey.exe
private static void CallCmdKey(string runAsDomain, string runsAsUser, string runAsPass, string target, string user, string pass)
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.Arguments = $"/generic:target /user:user /pass:pass";
proc.StartInfo.FileName = Environment.GetEnvironmentVariable("WINDIR") + "\\system32\\cmdkey.exe";
Console.Out.WriteLine(proc.StartInfo.Arguments);
proc.StartInfo.Domain = runAsDomain;
proc.StartInfo.UserName = runsAsUser;
proc.StartInfo.LoadUserProfile = true;
SecureString sec = new SecureString();
runAsPass.ToCharArray().ToList().ForEach(sec.AppendChar);
proc.StartInfo.Password = sec;
proc.StartInfo.WorkingDirectory = ".";
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();
Console.Out.WriteLine("done");
但由于访问被拒绝而失败。
然后我像这样尝试了 power shell 和 psexec:
$psexec = "C:\temp\psexec.exe"
Invoke-Command -ScriptBlock&$psexec -accepteula -u $WEB02AP2User -p $GISWEB02AP2Pass cmd /c cmdkey /generic:ffff /user:mufasa /pass:yoyo
但它失败了
访问被拒绝。 PsExec 无法启动 cmd: 远程脚本失败,退出代码为 5
出于安全原因,我不允许更改触手服务的帐户
我该如何解决这个问题
【问题讨论】:
Running Tentacle Under a Specific User Account 不会解决您的问题吗? @fredrik 可以,但我不允许更改帐户 尝试设置proc.CreateNoWindow = true
。不允许系统服务与桌面交互。
作为一般说明:(a) 您在 PS 示例中有您的用户名和密码(希望只是示例)。 (b) 如果您以这种方式执行,用户/密码将使用任务管理器等工具在相关系统上可见,该工具可以显示正在运行的进程的命令行。这可能对您或您的情况无关紧要,但无论如何您都应该意识到这一点。您最好直接使用“Credential Manager API”(搜索“windows credential manager api c#”)。
@fredrik proc.StartInfo.CreateNoWindow = true;遗憾的是没有完成这项工作。
【参考方案1】:
我无法找到此问题的解决方案。唯一的解决方法是让 octopusservice 作为特定用户帐户运行
【讨论】:
以上是关于将凭据添加到与本地系统帐户不同的帐户的主要内容,如果未能解决你的问题,请参考以下文章
清除 Visual Studio 2017 中存储的 TFS 凭据