簡體   English   中英

在.Net Core / UWP中獲取環境變量

[英]Get environment variables in .Net Core / UWP

我嘗試將.Net 4桌面應用程序遷移到UWP App,如果沒有MSDN這樣的文檔,這是一項艱巨的任務。 知道我有所有方法可以連接到現有的Webservice,但是使用的方法什么也不返回。

var envVars = Environment.GetEnvironmentVariables();
var host = Environment.GetEnvironmentVariable("COMPUTERNAME");
var user = Environment.GetEnvironmentVariable("USERNAME");
var userDnsDomain = Environment.GetEnvironmentVariable("USERDNSDOMAIN");

GetEnvironmentVariables的計數為0,.Net的舊方法不再存在:

var host = System.Net.Dns.GetHostName();
var user = Environment.UserName;

我需要計算機的名稱,登錄的用戶名和域。

有技巧或替代方法嗎?

我的解決方案:

var users = await User.FindAllAsync(UserType.LocalUser);
var user = (string) await users.FirstOrDefault().GetPropertyAsync(KnownUserProperties.AccountName);
var domain = "";
var host = "";

if (string.IsNullOrEmpty(user))
{
    var domainWithUser = (string) await users.FirstOrDefault().GetPropertyAsync(KnownUserProperties.DomainName);
    domain = domainWithUser.Split('\\')[0];
    user = domainWithUser.Split('\\')[1];
}

var host = NetworkInformation.GetHostNames().First(x => x.Type == HostNameType.DomainName).DisplayName.Split('.')[0];

這個答案更像是一個警告

  1. 您甚至無法使用PInvoke在UWP中查詢臨時環境變量
  2. 您可以查詢用戶的信息,但是絕對不能保證User API可以用於多種用戶類型,因此您需要針對空值進行防御性編碼。 我不知道為什么這個API這么不可靠

這是一個示例MainPage和一個屏幕快照,顯示所有返回為空白的數據。

using System;
using System.Linq;
using Windows.System;
using Windows.UI.Xaml.Controls;

namespace App_1
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            GetUserInfo();
        }

        public static async void GetUserInfo()
        {
            var users = await User.FindAllAsync(UserType.LocalUser);
            var user = await users.FirstOrDefault().GetPropertyAsync(KnownUserProperties.AccountName);
            var user_count = users.Count;
            var AccountName =
                await users[0].GetPropertyAsync(KnownUserProperties.AccountName);
            var DisplayName =
                await users[0].GetPropertyAsync(KnownUserProperties.DisplayName);
            var DomainName =
                await users[0].GetPropertyAsync(KnownUserProperties.DomainName);
            var FirstName =
                await users[0].GetPropertyAsync(KnownUserProperties.FirstName);
            var GuestHost =
                await users[0].GetPropertyAsync(KnownUserProperties.GuestHost);
            var LastName =
                await users[0].GetPropertyAsync(KnownUserProperties.LastName);
            var PrincipalName =
                await users[0].GetPropertyAsync(KnownUserProperties.PrincipalName);
            var ProviderName =
                await users[0].GetPropertyAsync(KnownUserProperties.ProviderName);
            var SessionInitiationProtocolUri =
                await users[0].GetPropertyAsync(KnownUserProperties.SessionInitiationProtocolUri);
            var User_Type = users[0].Type;
        }
    }
}

all_null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM