【问题标题】:RDP "ClientName" Environment Variable is null, if run as administratorRDP“ClientName”环境变量为空,如果以管理员身份运行
【发布时间】:2016-03-30 05:18:34
【问题描述】:

我们开发了一个windows应用并部署在终端服务器/citrix环境中。

我们使用 Enviornment.GetEnvironmentVariable("CLIENTNAME") 来获取客户端名称 从哪里访问 RDP。

如果我以正常权限运行应用程序(双击应用程序),那么我得到 “ClientName”环境变量中的正确值。

但是当我以管理员权限运行相同的应用程序时(右键单击并以管理员身份运行), 然后“ClientName”Env 变量返回 null。

注意:我写了一个小应用程序并获取虚拟机中存在的所有环境变量(RDP) 使用“Environment.GetEnvironmentVariables()”。 “ClientName”Env 变量仅在以正常权限执行时显示 如果以管理员权限执行,相同的变量将被隐藏。

谁能告诉我们为什么“ClientName”Env 变量在管理员权限下隐藏?

问候, 大师

【问题讨论】:

  • 我遇到了同样的问题。你找到解决办法了吗?

标签: environment-variables rdp runas


【解决方案1】:

这听起来可能是你的问题:

使用远程桌面连接进行远程连接时, 环境变量 CLIENTNAME 和 SESSIONNAME 添加到每个 启动的过程。

如果您将文件夹选项设置为“在单独的 进程”,然后从其他资源管理器启动应用程序 窗口,应用程序不会看到这些额外的环境 变量。

解决问题:

如果您的应用程序依赖这些变量,请删除该文件夹 选项“在单独的进程中启动文件夹窗口”。

MS 文章:https://support.microsoft.com/en-us/kb/2509192

【讨论】:

    【解决方案2】:
    $sessionID = (Get-Process -PID $pid).SessionID
    
    $PC = (Get-ItemProperty -path ("HKCU:\Volatile Environment\" + $sessionID) -name "CLIENTNAME").CLIENTNAME
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 2016-09-20
      • 2010-11-26
      • 2012-05-28
      • 2011-03-24
      • 2021-08-10
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多