![](/img/trans.png)
[英]What's the equivalent of the System.Diagnostic.Process on WinRT (C#)?
[英]Getting notified of password prompt C# System.Diagnostic.Process
我一直在尝试使用System.Diagnostic.Process在git可执行文件周围实现C#包装,并且遇到了一些麻烦。 我想做的是与远程存储库进行交互时,只要git提示输入用户名和密码,我的应用程序中都会弹出一个密码提示。 这将允许用户自动使用所有内置的git密码凭据存储工具,并且仍可以选择在不使用凭据时在应用程序中输入其凭据。
我尝试过的是以下代码。
var process = new System.Diagnostics.Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c git fetch";
StringBuilder output = new StringBuilder();
StringBuilder error = new StringBuilder();
process.OutputDataReceived += (sender, e) =>
{
Debug.Log("OUTPUT DATA: " + e.Data);
};
process.ErrorDataReceived += (sender, e) =>
{
Debug.Log("ERROR DATA: " + e.Data);
};
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
我看到带有“ Password for: http : //www.gitrepo.com ”的命令窗口弹出,但是在我的OutputDataReceived或ErrorDataReceived回调中看不到此输出,以供我的应用读取。 理想情况下,当这些提示出现时,我想触发一个事件,并为用户显示一个不错的用户名/密码对话框。
我仔细浏览了git代码,发现这些密码提示输出到/ dev / tty并从中读取。 现在,我对输入/输出流和TTY的工作方式并不十分熟悉。 我想知道是否有人可以向我指出正确的方向,以使我能够检测到何时弹出此提示并允许用户通过
啊哈。 我找到了答案。 我可以制作一个小的GUI应用程序,通过设置“ git config core.askpass”,git会在需要密码时提示我
我使用以下AskPass脚本进行了测试,它可以根据需要运行。
http://code.metager.de/source/xref/git/git-gui/git-gui--askpass
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.