2014-05-22 108 views
1

嗨我有一個xml文件有兩個值。如何在c#中使用xml中的字符串變量作爲字符串?

的第一個值是PowerShell的 用戶名的第二個值是密碼作爲SecureString的對PowerShell的

現在我想讀這個值,並將其設置爲變量字符串ps_user和SecureString的ps_password

我問題現在我可以如何使用SecureString值。

這裏我的xml:

<?xml version="1.0" encoding="iso-8859-1"?> 

<Credential> 
    <User value="tarasov" /> 
    <SecurePassword value="0d08c9ddf0004800000a0000340b62f9d614" /> 
</Credential> 

這裏我的C#代碼:

private string GetPowershellCredentials(string path, string attribute) 
     { 
      XDocument document; 
      string value = string.Empty; 

      try 
      { 
       document = XDocument.Load(path); 

       value = document.Element("Credential").Element(attribute).Attribute("value").Value; 

       return value; 
      } 
      catch (Exception) 
      { 
       return null; 
      } 
      finally 
      { 
       document = null; 
      } 
     } 

例如:

> string path = Server.MapPath("~/App_Data/Powershell_credentials.xml"); 

> string ps_user = GetPowershellCredentials(path, "User"); // It works 

> SecureString ps_password = GetPowershellCredentials(path,"SecurePassword"); // this not :((

我怎樣才能做到這一點?

回答

1

因爲你的GetPowershellCredentials返回一個字符串。這無法自動轉換。如果你需要一個安全字符串,你可以使用這樣的事情:

public static SecureString ToSecureString(string source) 
{ 
     if (string.IsNullOrWhiteSpace(source)) 
      return null; 
     else 
     { 
      SecureString result = new SecureString(); 
      foreach (char c in source.ToCharArray()) 
       result.AppendChar(c); 
      return result; 
     } 
} 

這:

SecureString ps_password = ToSecureString(GetPowershellCredentials(path, "SecurePassword")); 
+0

但在我的XML值是SecureString的 – Tarasov

+0

您是否嘗試過我的解決方案?請試試 –

+0

(Fehler bei SSPI-Aufruf,siehe interne Ausnahme。)in English - > error by SSPI Call,看看實習生Execption ... – Tarasov

相關問題