如何在OOB应用程序中获取用户名



我有一个当前的silverlight应用程序,它在asp.net浏览器窗口中运行,是我们内部网站的一部分。

我真的需要有登录的系统用户名。

我有一个作为OOB运行的测试系统,它将执行从系统中获取用户名所需的操作。

我的问题是。。。。OOB silverlight应用程序是否仍能像未标记为OOB应用程序时那样驻留在intranet页面中?

谢谢tony

在Silverlight 4 OOB中,当应用程序以提升的权限运行时,您可以使用AutomationFactory。

var username = "";
if (App.Current.HasElevatedPermissions)
    using (dynamic shellObj = AutomationFactory.CreateObject("WScript.Network"))
        userName = shellObj.UserName;

请注意,您需要参考

  • Microsoft.CSharp.dll和
  • System.Core.dll

在Justin Angels博客上阅读更多关于这个主题的信息

如果您正在部署Silverlight 4应用程序,它必须在浏览器外运行,因为浏览器内的沙盒不允许ElevatedPermissions。如果您决定使用Silverlight 5,您可以使用浏览器内应用程序的管理帐户启用提升权限(msdn.microsoft.com/en-us/library/ee721083(v=vs.95).aspx)。

尽管你当然可以在intranet页面内运行该应用程序,但只要你(或用户)不以OOB方式安装和运行,它就没有提升的权限。因此,应用程序将无法访问用户名。Silverlight 5似乎部分取消了这个限制,但我还没有测试过,也不能告诉你是否可以按照上面描述的方式进行。

我只能猜测你将如何使用用户名,但如果你计划将其用于身份验证或授权,你应该做更多的研究。

如果你想真正验证用户,服务器必须是这样做的;密码、windows身份验证等。在PC上运行的用户名(甚至域)不应该被信任是正确的。

最新更新