C# 以编程方式获取Windows RunaUser提示符

C# 以编程方式获取Windows RunaUser提示符,c#,.net,authentication,windows-7,C#,.net,Authentication,Windows 7,在Windows7上使用C.Net4.0,WinForms不是ASP.NET 当您按住shift键并右键单击可执行文件,然后选择“以不同用户身份运行”时,我是否可以获得与您相同的对话 我想提示用户输入凭据,但将详细信息传递给操作系统ie。这样我的应用程序就不会看到或处理用户名/密码。我希望使用内置提示符,而不是自己滚动 我知道获取类中使用的令牌的函数,但我认为可能有一个替代API可以调用,这样我就不需要做出自己的登录提示 这里的最终目标是测试用户是否属于给定的Windows组自定义组,而不是内置

在Windows7上使用C.Net4.0,WinForms不是ASP.NET

当您按住shift键并右键单击可执行文件,然后选择“以不同用户身份运行”时,我是否可以获得与您相同的对话

我想提示用户输入凭据,但将详细信息传递给操作系统ie。这样我的应用程序就不会看到或处理用户名/密码。我希望使用内置提示符,而不是自己滚动

我知道获取类中使用的令牌的函数,但我认为可能有一个替代API可以调用,这样我就不需要做出自己的登录提示


这里的最终目标是测试用户是否属于给定的Windows组自定义组,而不是内置组。我还担心,这将需要基于MSDN示例代码的管理员权限,但部署此应用程序的帐户不一定是管理员。我的应用程序目前不需要管理员权限,如果可能的话,我希望保持这种权限。

您可以使用runasuser Shell动词,如下所示:

ProcessStartInfo psi = new ProcessStartInfo(YourExePath);
psi.Verb = "runasuser";
Process.Start(psi);

可能是@SimonMourier的副本啊,谢谢。谷歌没有帮助。我实际上找到了一个更好的方法:-查看我的anwser。这不起作用,因为我无法从Shell获取返回值,因为它返回一个空进程。因此,我使用MSDN示例代码运行注意:您可以使用Environment.MachineName获取本地PC,使用Environment.UserDomainName获取“domain”字符串参数的当前用户域。@信息很好,谢谢Josh。我刚刚碰到了你原来的问题,这个回答过程也遇到了同样的问题。你有没有找到比捕获所需的用户名和P/Invoking更优雅的解决方案?@Basic没有,我最终在我的公共库中创建了一系列验证代码,用于我的项目中。从MSDN拼凑而成,所以答案和Git上的一个非常有用的例子。我的助手类分布在许多文件中,因此我需要一些时间才能将其作为一个连贯的答案发布在这里,但所有的信息都在那里,我不需要发明任何新的东西。