mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 14:07:46 +08:00
Merge pull request #1662 from GreyCorbel/release/v1.76
Added support for password retrieval via AdmPwd.E 7.7.1
This commit is contained in:
@@ -17,5 +17,7 @@ if (!(Test-Path -Path $DestinationDir))
|
||||
$sourceFiles = Get-ChildItem -Path $SourcePath -Recurse | ?{$_.Extension -match "exe|msi"}
|
||||
foreach ($item in $sourceFiles)
|
||||
{
|
||||
$item.Name
|
||||
(Get-FileHash -Path $item.fullName -Algorithm SHA512).Hash
|
||||
Copy-Item -Path $item.FullName -Destination $DestinationDir -Force
|
||||
}
|
||||
@@ -56,6 +56,8 @@ if ($ConfigurationName -eq "Release Portable") {
|
||||
Remove-Item -Force $PortableZip -ErrorAction SilentlyContinue
|
||||
& $SEVENZIP a -bt -bd -bb1 -mx=9 -tzip -y -r $PortableZip (Join-Path -Path $tempFolderPath -ChildPath "*.*")
|
||||
#& $SEVENZIP a -bt -mx=9 -tzip -y $PortableZip "$($SolutionDir)*.TXT"
|
||||
(Get-FileHash -Path $PortableZip -Algorithm SHA512).Hash
|
||||
|
||||
}
|
||||
else {
|
||||
Write-Output "We will not zip anything - this isnt a portable release build."
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
<IsCodedUITest>False</IsCodedUITest>
|
||||
<TestProjectType>UnitTest</TestProjectType>
|
||||
<TargetFrameworkProfile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27130.2010
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29613.14
|
||||
MinimumVisualStudioVersion = 14.0.25420.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteV1", "mRemoteV1\mRemoteV1.csproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
|
||||
EndProject
|
||||
@@ -61,7 +61,6 @@ Global
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|x86.Build.0 = Debug|x86
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|Any CPU.ActiveCfg = Release|x86
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|Any CPU.Build.0 = Release|x86
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|x86.ActiveCfg = Release|x86
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Installer|x86.Build.0 = Release|x86
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|Any CPU.ActiveCfg = Release Portable|x86
|
||||
@@ -106,7 +105,6 @@ Global
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|Any CPU.Build.0 = Release|Any CPU
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|x86.ActiveCfg = Release|Any CPU
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Installer|x86.Build.0 = Release|Any CPU
|
||||
{16AA21E2-D6B7-427D-AB7D-AA8C611B724E}.Release Portable|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
||||
@@ -117,57 +117,55 @@ namespace mRemoteNG.Connection.Protocol.ICA
|
||||
return;
|
||||
}
|
||||
|
||||
var user = _info?.Username ?? "";
|
||||
var pass = _info?.Password ?? "";
|
||||
var dom = _info?.Domain ?? "";
|
||||
var user = _info?.Username ?? "";
|
||||
var pass = _info?.Password ?? "";
|
||||
var dom = _info?.Domain ?? "";
|
||||
|
||||
if (string.IsNullOrEmpty(user))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
{
|
||||
_icaClient.Username = Environment.UserName;
|
||||
user = Environment.UserName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom")
|
||||
else if (Settings.Default.EmptyCredentials == "custom" || Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
_icaClient.Username = Settings.Default.DefaultUsername;
|
||||
user = Settings.Default.DefaultUsername;
|
||||
}
|
||||
}
|
||||
else
|
||||
if (string.IsNullOrEmpty(dom))
|
||||
{
|
||||
_icaClient.Username = user;
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
{
|
||||
dom = Environment.UserDomainName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom" || Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
dom = Settings.Default.DefaultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
_icaClient.Username = user;
|
||||
_icaClient.Domain = dom;
|
||||
|
||||
if (string.IsNullOrEmpty(pass))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "custom")
|
||||
{
|
||||
if (Settings.Default.DefaultPassword != "")
|
||||
{
|
||||
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
|
||||
_icaClient.SetProp("ClearPassword", cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey));
|
||||
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
|
||||
pass = cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_icaClient.SetProp("ClearPassword", pass);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(dom))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
if (Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
_icaClient.Domain = Environment.UserDomainName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom")
|
||||
{
|
||||
_icaClient.Domain = Settings.Default.DefaultDomain;
|
||||
if (dom == ".")
|
||||
pass = AdmPwd.PDSUtils.PdsWrapper.GetPassword(null, _info.Hostname, AdmPwd.Types.IdentityType.LocalComputerAdmin, false, false).Password;
|
||||
else
|
||||
pass = AdmPwd.PDSUtils.PdsWrapper.GetPassword(dom, user, AdmPwd.Types.IdentityType.ManagedDomainAccount, false, false).Password;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_icaClient.Domain = dom;
|
||||
}
|
||||
|
||||
_icaClient.SetProp("ClearPassword", pass);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@@ -355,9 +355,12 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
{
|
||||
if (_connectionInfo.RDGatewayUseConnectionCredentials == RDGatewayUseConnectionCredentials.Yes)
|
||||
{
|
||||
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.Username;
|
||||
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.Password;
|
||||
_rdpClient.TransportSettings2.GatewayDomain = _connectionInfo?.Domain;
|
||||
var userName = GetUserName(_connectionInfo?.Username ?? "");
|
||||
var domain = GetDomain(_connectionInfo?.Domain ?? "");
|
||||
|
||||
_rdpClient.TransportSettings2.GatewayUsername = userName;
|
||||
_rdpClient.TransportSettings2.GatewayDomain = domain;
|
||||
_rdpClient.TransportSettings2.GatewayPassword = GetPassword((_connectionInfo?.Password ?? ""), userName, domain, _connectionInfo.Hostname);
|
||||
}
|
||||
else if (_connectionInfo.RDGatewayUseConnectionCredentials == RDGatewayUseConnectionCredentials.SmartCard)
|
||||
{
|
||||
@@ -365,11 +368,14 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
}
|
||||
else
|
||||
{
|
||||
_rdpClient.TransportSettings2.GatewayUsername = _connectionInfo.RDGatewayUsername;
|
||||
_rdpClient.TransportSettings2.GatewayPassword = _connectionInfo.RDGatewayPassword;
|
||||
_rdpClient.TransportSettings2.GatewayDomain = _connectionInfo.RDGatewayDomain;
|
||||
_rdpClient.TransportSettings2.GatewayCredSharing = 0;
|
||||
}
|
||||
var userName = GetUserName(_connectionInfo.RDGatewayUsername);
|
||||
var domain = GetDomain(_connectionInfo.RDGatewayDomain);
|
||||
|
||||
_rdpClient.TransportSettings2.GatewayUsername = userName;
|
||||
_rdpClient.TransportSettings2.GatewayDomain = domain;
|
||||
_rdpClient.TransportSettings2.GatewayPassword = GetPassword(_connectionInfo.RDGatewayPassword, userName, domain, _connectionInfo.Hostname);
|
||||
_rdpClient.TransportSettings2.GatewayCredSharing = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -416,7 +422,60 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
Runtime.MessageCollector.AddExceptionStackTrace(Language.strRdpSetConsoleSessionFailed, ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private string GetUserName(string userName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(userName))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
{
|
||||
userName = Environment.UserName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom" || Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
userName = Settings.Default.DefaultUsername;
|
||||
}
|
||||
}
|
||||
return userName;
|
||||
}
|
||||
private string GetDomain(string domain)
|
||||
{
|
||||
if (string.IsNullOrEmpty(domain))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
{
|
||||
domain = Environment.UserDomainName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom" || Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
domain = Settings.Default.DefaultDomain;
|
||||
}
|
||||
}
|
||||
return domain;
|
||||
}
|
||||
private string GetPassword(string password, string userName, string domain, string host)
|
||||
{
|
||||
if (string.IsNullOrEmpty(password))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "custom")
|
||||
{
|
||||
if (Settings.Default.DefaultPassword != "")
|
||||
{
|
||||
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
|
||||
password = cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey);
|
||||
}
|
||||
}
|
||||
if (Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
if (domain == ".")
|
||||
password = AdmPwd.PDSUtils.PdsWrapper.GetPassword(null, host, AdmPwd.Types.IdentityType.LocalComputerAdmin, false, false).Password;
|
||||
else
|
||||
password = AdmPwd.PDSUtils.PdsWrapper.GetPassword(domain, userName, AdmPwd.Types.IdentityType.ManagedDomainAccount, false, false).Password;
|
||||
}
|
||||
}
|
||||
return password;
|
||||
}
|
||||
|
||||
private void SetCredentials()
|
||||
{
|
||||
try
|
||||
@@ -426,57 +485,13 @@ namespace mRemoteNG.Connection.Protocol.RDP
|
||||
return;
|
||||
}
|
||||
|
||||
var userName = _connectionInfo?.Username ?? "";
|
||||
var password = _connectionInfo?.Password ?? "";
|
||||
var domain = _connectionInfo?.Domain ?? "";
|
||||
|
||||
if (string.IsNullOrEmpty(userName))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
{
|
||||
_rdpClient.UserName = Environment.UserName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom")
|
||||
{
|
||||
_rdpClient.UserName = Settings.Default.DefaultUsername;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_rdpClient.UserName = userName;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(password))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "custom")
|
||||
{
|
||||
if (Settings.Default.DefaultPassword != "")
|
||||
{
|
||||
var cryptographyProvider = new LegacyRijndaelCryptographyProvider();
|
||||
_rdpClient.AdvancedSettings2.ClearTextPassword = cryptographyProvider.Decrypt(Settings.Default.DefaultPassword, Runtime.EncryptionKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_rdpClient.AdvancedSettings2.ClearTextPassword = password;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(domain))
|
||||
{
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
{
|
||||
_rdpClient.Domain = Environment.UserDomainName;
|
||||
}
|
||||
else if (Settings.Default.EmptyCredentials == "custom")
|
||||
{
|
||||
_rdpClient.Domain = Settings.Default.DefaultDomain;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_rdpClient.Domain = domain;
|
||||
}
|
||||
var userName = GetUserName(_connectionInfo?.Username ?? "");
|
||||
var domain = GetDomain(_connectionInfo?.Domain ?? "");
|
||||
|
||||
_rdpClient.Domain = domain;
|
||||
_rdpClient.UserName = userName;
|
||||
_rdpClient.AdvancedSettings2.ClearTextPassword = GetPassword((_connectionInfo?.Password ?? ""), userName, domain, _connectionInfo.Hostname);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
357
mRemoteV1/Docs/PDSConfigWrapper.xml
Normal file
357
mRemoteV1/Docs/PDSConfigWrapper.xml
Normal file
@@ -0,0 +1,357 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--Management interface-->
|
||||
<PdsConfigWrapper>
|
||||
<GetPds>
|
||||
<summary>
|
||||
Returns list of PDS discovered either form DNS or from GPO
|
||||
</summary>
|
||||
<returns>Returns list of PDS instances discovered</returns>
|
||||
<remarks>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetPds>
|
||||
<GetSupportedForest>
|
||||
<summary>
|
||||
Calls PDS to get list of supported forests as configured in PDS configuration file.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to query list of supported forests.
|
||||
</param>
|
||||
<returns>List of names of AD forests as known by given PDS instance (optionaly with connection credentials and id of enryption key that is used to protect them is configuration file), or null if no specific AD forests are configured and PDS just covers local AD forest.</returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</GetSupportedForest>
|
||||
<AddSupportedForest>
|
||||
<summary>
|
||||
Calls PDS to add new AD forest to list of supported forests.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance that will be target of the operation. If operating more intances of PDS, supported AD forest must be added to each of them, so as PDS configuration is consistent across all instances.
|
||||
</param>
|
||||
<param name="Forest">
|
||||
Specifies parameters of the newly supported forest
|
||||
</param>
|
||||
<returns>Newly added supported forest.</returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</AddSupportedForest>
|
||||
<SetSupportedForest>
|
||||
<summary>
|
||||
Calls PDS to update supported forest parameters (typically connection credentials).
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to perform the operation on. If operating more intances of PDS, update must be performed on each of them to ensure consistency of configuration across all instances of PDS.
|
||||
</param>
|
||||
<param name="Forest">
|
||||
Specifies parameters to be updated on the forest
|
||||
</param>
|
||||
<returns>Updated supported forest.</returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</SetSupportedForest>
|
||||
<RemoveSupportedForest>
|
||||
<summary>
|
||||
Calls PDS to add remove AD forest from list of supported forests.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to remove the forest from list of supported forests. If operating more intances of PDS, supported AD forest must be removed from each of them.
|
||||
</param>
|
||||
<param name="Forest">
|
||||
Specifies parameters of the removed forest. Only DNS name of Forest is used to identify forest to be removed.
|
||||
</param>
|
||||
<returns>Removed forest.</returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</RemoveSupportedForest>
|
||||
<AddSidMapping>
|
||||
<summary>
|
||||
Calls PDS to add maping of security principal from untrusted forest to security principal from trusted forest.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with. If operating more intances of PDS, SID mapping must be added to each of them to ensure configuration consistency.
|
||||
</param>
|
||||
<param name="Mapping">
|
||||
Specifies parameters of the SID mapping.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</AddSidMapping>
|
||||
<UpdateSidMapping>
|
||||
<summary>
|
||||
Calls PDS to modify maping of security principal from untrusted forest to security principal from trusted forest.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with. If operating more intances of PDS, SID mapping must be updated on each of them to ensure configuration consistency.
|
||||
</param>
|
||||
<param name="Mapping">
|
||||
Specifies parameters of the SID mapping.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</UpdateSidMapping>
|
||||
<GetSidMapping>
|
||||
<summary>
|
||||
Calls PDS to get configured mapings of security principal from untrusted forest to security principal from trusted forest.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<returns>List of configured SID mappings</returns>
|
||||
<remarks>
|
||||
<para>Can be called by any authenticated user</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetSidMapping>
|
||||
<RemoveSidMapping>
|
||||
<summary>
|
||||
Calls PDS to add remove SID mappings from list of mappings.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to remove the mapping from. If operating more intances of PDS, mapping must be removed from each of them.
|
||||
</param>
|
||||
<param name="PrimarySid">
|
||||
Specifies Primary SID of mapping to be removed.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</RemoveSidMapping>
|
||||
<AddManagedAccountsContainer>
|
||||
<summary>
|
||||
Calls PDS to add AD container with accounts with automatically managed password.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with. If operating more intances of PDS, container must be added to configuration of each of them to ensure configuration consistency.
|
||||
</param>
|
||||
<param name="Container">
|
||||
Specifies parameters of password for accounts located in AD container.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</AddManagedAccountsContainer>
|
||||
<GetManagedAccountsContainer>
|
||||
<summary>
|
||||
Calls PDS to retrieve configuration of AD containers with accounts with automatically managed password.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<returns>List of managed domain acocunts containers as defined in PDS configuration file.</returns>
|
||||
<remarks>
|
||||
<para>Can be called by any authenticated user</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetManagedAccountsContainer>
|
||||
<SetManagedAccountsContainer>
|
||||
<summary>
|
||||
Calls PDS to update configuration of AD container with accounts with automatically managed password.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with. If operating more intances of PDS, container must be updated on each of them to ensure configuration consistency.
|
||||
</param>
|
||||
<param name="Container">
|
||||
Specifies parameters of password for accounts located in given AD container.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</SetManagedAccountsContainer>
|
||||
<RemoveManagedAccountsContainer>
|
||||
<summary>
|
||||
Calls PDS to remove AD container with accounts with automatically managed password from PDS configuration.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with. If operating more intances of PDS, container must be removed from each of them to ensure configuration consistency.
|
||||
</param>
|
||||
<param name="DN">
|
||||
Specifies distinguishedName of container to be removed from configuration.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</RemoveManagedAccountsContainer>
|
||||
<TransferPdsAdminRole>
|
||||
<summary>
|
||||
Transfers PDS Admin role to security principal (user or group)
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
<para>Identifies PDS instance to work with.</para>
|
||||
<para>Important: If operating more intances of PDS, configuration change must be performed on each of them to ensure configuration consistency.</para>
|
||||
</param>
|
||||
<param name="NewRoleHolder">
|
||||
Name of new holder of PDS Admin role. Should include domain name.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</TransferPdsAdminRole>
|
||||
<UpdateManagedAccountsParameters>
|
||||
<summary>
|
||||
Updates global configuration of managed domain accounts processing.<br/>
|
||||
Note: Currently, only global parameter supported is interval of scanning of managed domain accounts for password expiration.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
<para>Identifies PDS instance to work with.</para>
|
||||
<para>Important: If operating more intances of PDS, configuration change must be performed on each of them to ensure configuration consistency.</para>
|
||||
</param>
|
||||
<param name="ManagementInterval">
|
||||
Interval of scanning of managed domain accounts for password expiration.
|
||||
</param>
|
||||
<returns></returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</UpdateManagedAccountsParameters>
|
||||
<GetManagedAccountsParameters>
|
||||
<summary>
|
||||
Returns global configuration of managed domain accounts processing.<br/>
|
||||
Note: Currently, only global parameter supported is interval of scanning of managed domain accounts for password expiration.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<returns>Global configuration of managed domain accounts processing.</returns>
|
||||
<remarks>
|
||||
</remarks>
|
||||
</GetManagedAccountsParameters>
|
||||
<GetDnsParameters>
|
||||
<summary>
|
||||
Returns parameters of DNS registration for PDS autodiscover SRV records.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<returns>
|
||||
<see cref="DnsParameters"/> object.
|
||||
</returns>
|
||||
<remarks>
|
||||
</remarks>
|
||||
</GetDnsParameters>
|
||||
<UpdateDnsParameters>
|
||||
<summary>
|
||||
Updates parameters of DNS registration for PDS autodiscover SRV records.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
<para>Identifies PDS instance to work with.</para>
|
||||
<para>Important: If operating more intances of PDS, configuration change must be performed on each of them to ensure configuration consistency.</para>
|
||||
</param>
|
||||
<param name="Priority">Priority of SRV record. Null means default, which is 100.</param>
|
||||
<param name="RegistrationInterval">How often PDS service re-registers autodiscover record to prevent its expiration. Null means default, which is 86400 seconds (1 day).</param>
|
||||
<param name="Ttl">Time-to-live for registered SRV record. Null means default, which is 1200 seconds (20 minutes)</param>
|
||||
<param name="UnregisterOnShutdown">Whether or not the SRV record shall be unregistered then services stops, to prevent autodiscover records pointing to non-operating PDS instance. Null means default, which is 'true'</param>
|
||||
<param name="Weight">Weight of registered SRV record.<br/>
|
||||
Note: Weight is not used by the solution.
|
||||
</param>
|
||||
<returns>
|
||||
</returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</UpdateDnsParameters>
|
||||
<UpdateAccessControlParameters>
|
||||
<summary>
|
||||
Updates parameters of access control process for password reads and resets.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
<para>Identifies PDS instance to work with.</para>
|
||||
<para>Important: If operating more intances of PDS, configuration change must be performed on each of them to ensure configuration consistency.</para>
|
||||
</param>
|
||||
<param name="HonorAllExtendedRightsPermission">Whether 'All extended rights' permission also includes 'Read password' and 'Reset password' permission.Null means default, which is 'false'.</param>
|
||||
<param name="HonorFullControlPermission">Whether 'Full control' permission also includes 'Read password' and 'Reset password' permission.Null means default, which is 'false'.</param>
|
||||
<param name="HonorLocalGroupsFromRemoteComputerDomain">
|
||||
<para>
|
||||
Whether PDS also evaluates membership in local groups from remote domain.
|
||||
</para>
|
||||
<para>
|
||||
Consider the following scenario:
|
||||
<list>
|
||||
<item>PDS is installed in forest domain A</item>
|
||||
<item>Computer account X we want know admin password for is in forest domain B</item>
|
||||
<item>User U who wants to know admin password for computer X is also in forest domain B</item>
|
||||
<item>User U is member of Domain local group DLG</item>
|
||||
<item>Permission to read the admin password for computer X is delegated to group DLG</item>
|
||||
</list>
|
||||
In this case, when PDS is performing access check, it normally does NOT see user U being member of group DLG (because membership in Domain Local groups is not propagated to other domains in forest), and because of that, it replies with AccessDenied error. Setting this parameter to true makes PDS to perform direct lookup for local group membership of user in his home domain to make sure that complete membership is evaluated.
|
||||
This additional lookup consumes PDS service resources and requires direct connection between PDS and domain controller of user's domain, so delegation using domain Local groups in multi-forest domains should be avoided.
|
||||
</para>
|
||||
</param>
|
||||
<param name="MandatoryGroupSids">List of Security Identifiers (SIDs) that caller additionally must be member of for calls to password reads/resets to succeed. Membership in such groups is then additional gate that allows to perform active operations. If multiple groups specified, user must be member of at least 1 of them. This helps implement additional levels of access control, such as JIT of Authentication Mechanism Assurance (AMA)</param>
|
||||
<returns>
|
||||
</returns>
|
||||
<remarks>
|
||||
<para>PDS Admin role is required to successfully call this method</para>
|
||||
<para>Call is audited</para>
|
||||
</remarks>
|
||||
</UpdateAccessControlParameters>
|
||||
<GetAccessControlsParameters>
|
||||
<summary>
|
||||
Returns parameters of access control process for password reads and resets.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<returns>
|
||||
<see cref="AccessControlParameters"/> object.
|
||||
</returns>
|
||||
<remarks>
|
||||
</remarks>
|
||||
</GetAccessControlsParameters>
|
||||
<GetLicenseParameters>
|
||||
<summary>
|
||||
Returns parameters of current license, including path to license file.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<returns>
|
||||
<see cref="LicenseParameters"/> object.
|
||||
</returns>
|
||||
<remarks>
|
||||
</remarks>
|
||||
</GetLicenseParameters>
|
||||
<UpdateLicenseFilePath>
|
||||
<summary>
|
||||
Updates path to license file.
|
||||
</summary>
|
||||
<param name="Pds">
|
||||
Identifies PDS instance to work with.
|
||||
</param>
|
||||
<param name="FilePath">
|
||||
Absolute or relative path to license file that Pds instance shall use.
|
||||
</param>
|
||||
<returns>
|
||||
<see cref="LicenseParameters"/> object.
|
||||
</returns>
|
||||
<remarks>
|
||||
</remarks>
|
||||
</UpdateLicenseFilePath>
|
||||
|
||||
</PdsConfigWrapper>
|
||||
374
mRemoteV1/Docs/PdsWrapper.xml
Normal file
374
mRemoteV1/Docs/PdsWrapper.xml
Normal file
@@ -0,0 +1,374 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<PdsWrapper>
|
||||
<UpsertSupportedForest>
|
||||
<summary>
|
||||
Calls PDS to request add or update supported forest to configuration file in PDS.
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of new or update supported forest.
|
||||
</param>
|
||||
<param name="User">
|
||||
Name of account which use for ldap connection to supported forest.
|
||||
Account name can be passed as one of the following:
|
||||
<list type="bullet">
|
||||
<item>sAMAccountName (with domain)</item>
|
||||
<item>userPrincipalName</item>
|
||||
</list>
|
||||
<para>Together with parameter "User" must set parameters "Password" and "KeyId".</para>
|
||||
</param>
|
||||
<param name="Password">
|
||||
Password for account which use for ldap connection to supported forest.
|
||||
<para>Together with parameter "Password" must set parameters "User" and "KeyId".</para>
|
||||
</param>
|
||||
<param name="KeyId">
|
||||
Identifies key pair to which the password is encrypted.
|
||||
<para>Together with parameter "KeyId" must set parameters "User" and "Password".</para>
|
||||
</param>
|
||||
<returns>List of PDS instances where added or updated supported forest.</returns>
|
||||
<para>When parameter User, Password and KeyID are not set, use default PDS credentials</para>
|
||||
<para>
|
||||
Caller must have PDS Admin role. For callers without role, AccessDenied exception is thrown. To find out, if caller has PDS Admin role, call method <see cref="IsPDSAdmin"/>.
|
||||
</para>
|
||||
<para>By default, PDS Admin role is assigned to Enterprise Admins group and can be changed via PDS configuration file.</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</UpsertSupportedForest>
|
||||
<ResetManagedAccountPassword>
|
||||
<summary>
|
||||
Calls PDS to request reset of managed account password in given AD forest.
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
<para>
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest (forest where PDS is installed), you can pass null as parameter value
|
||||
</para>
|
||||
</param>
|
||||
<param name="AccountName">
|
||||
Name of account where password shall be reset.
|
||||
Account name can be passed as one of the following:
|
||||
* sAMAccountName (without domain)
|
||||
* userPrincipalName
|
||||
* distinguishedName
|
||||
</param>
|
||||
<param name="WhenEffective">When password reset shall occur. Password will be reset during next PDS management cycle - see passwordManagementInterval in PDS config file.</param>
|
||||
<returns>Information about result of operation along with account name and DN</returns>
|
||||
<remarks>
|
||||
<para>
|
||||
PDS does not try to guess domain or forest name from account name - it searches against Global Catalog interface of AD forest passed in <paramref name="ForestName"/> parameter
|
||||
</para>
|
||||
<para>Caller must have Reset Local Admin Passsword permission on given managed account object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</ResetManagedAccountPassword>
|
||||
<GetEnvironmentStats>
|
||||
<summary>
|
||||
Calls PDs to retrieve environment status for managed environment:
|
||||
* List of domains in each managed forest, along with number of managed machines and domain accounts in each domain
|
||||
* Overall status for each AD forest, including license expiration and consumption
|
||||
</summary>
|
||||
<returns>Environment status for the solution</returns>
|
||||
<remarks>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetEnvironmentStats>
|
||||
<GetUserPermissions>
|
||||
<summary>
|
||||
Calls PDS to retrieve information about AdmPwd.E permissions that given user has on computer object, as seen by PDS
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest, pass null as parameter value
|
||||
</param>
|
||||
<param name="ComputerName">Name of computer where password of local admin account shall be reset</param>
|
||||
<param name="UserUpn">UserPrincipalName of user in question.</param>
|
||||
<returns>List of solution specific permissions PDS finds for given user for given computer object </returns>
|
||||
<remarks>
|
||||
<para>This method uses Kerberos S2U4Self logon to obtain user's Kerberos ticket with security group membership of user account in question</para>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetUserPermissions>
|
||||
<GetKeyAdminsRoleName>
|
||||
<summary>
|
||||
Calls PDS to retrieve name of AD group that implements Key Admin role. Members of the group hold Key Admin role on PDS
|
||||
</summary>
|
||||
<returns>Returns name of AD group that is configured on PDS as Key Admin role group</returns>
|
||||
<remarks>
|
||||
<para>By default, this role is held by Enterprise Admins group. Role assignment can be changed in PDS configuration file.</para>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetKeyAdminsRoleName>
|
||||
<GetSupportedKeySizes>
|
||||
<summary>
|
||||
Calls PDS to retrieve key sizes supported by PDS.
|
||||
</summary>
|
||||
<returns>List of supported key sizes, in bits</returns>
|
||||
<remarks>
|
||||
<para>
|
||||
PDS only creates key pairs of supported sizes; however it can decrypt passwords encrypted by any valid RSA key - see <see cref="GenerateKeyPair"/> method to see how to generate new key pair
|
||||
</para>
|
||||
<para>Supported key sizes are configured in PDS configuration file.</para>
|
||||
<para>RSA CSP used by solution supports key sizes up to 16384 bits in 8-bit increments on Windows OS.</para>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetSupportedKeySizes>
|
||||
<IsPDSAdmin>
|
||||
<summary>
|
||||
Calls PDS to return information whether or not the caller is in Key Admin role on PDS
|
||||
</summary>
|
||||
<returns>True if caller is in Key Admin role on PDS. Otherwise returns false.</returns>
|
||||
<remarks>
|
||||
<para>Can be used by various client tools to properly render UI and allow users in KeyAdmin role to see key pair management UI</para>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</IsPDSAdmin>
|
||||
<GetManagedAccountPassword>
|
||||
<summary>
|
||||
Retrieves password of managed account in given AD forest.
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
<para>
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest (forest where PDS is installed), you can pass null as parameter value
|
||||
</para>
|
||||
</param>
|
||||
<param name="AccountName">
|
||||
Name of account where password shall be read.
|
||||
Account name can be passed as one of the following:
|
||||
* sAMAccountName (without domain)
|
||||
* userPrincipalName
|
||||
* distinguishedName
|
||||
</param>
|
||||
<param name="IncludePasswordHistory">Whether or not to include password history</param>
|
||||
<returns>Password, current password expiration time and optional password history</returns>
|
||||
<remarks>
|
||||
<para>
|
||||
PDS does not try to guess domain or forest name from account name - it searches against Global Catalog interface of AD forest passed in <paramref name="ForestName"/> parameter for account as specified in <paramRef name="AccountName"/>
|
||||
</para>
|
||||
<para>Caller must have Read Local Admin Passsword permission on given managed account object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</GetManagedAccountPassword>
|
||||
<GetPassword>
|
||||
<summary>
|
||||
Calls PDS to retrieve password of managed account in given AD forest.
|
||||
Managed account can be either:
|
||||
* Domain computer local admin account
|
||||
* Managed domain account
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest, pass null as parameter value
|
||||
</param>
|
||||
<param name="Identity">
|
||||
When retrieving password of computer local admin account, pass name of computer where password of local admin account shall be retrieved. Name of the computer can be passed as one of the following:
|
||||
* Hostname, such as MyComputer
|
||||
* FQDN, such as mycomputer.mydomain.com
|
||||
* Distinguished name, such as cn=MyComputer,ou=MyComputers,dc=mydomain,dc=com
|
||||
<para/>
|
||||
When retrieving password of managed domain account, pas the name of domain account. Account name can be passed as one of the following:
|
||||
* sAMAccountName (without domain)
|
||||
* userPrincipalName
|
||||
* distinguishedName
|
||||
</param>
|
||||
<param name="Type">
|
||||
Type of the account to retrieve password for. Can be one of the supported account types:
|
||||
* LocalComputerAdmin
|
||||
* ManagedDomainAccount
|
||||
</param>
|
||||
<param name="IncludePasswordHistory">Whether or not to include password history</param>
|
||||
<param name="IsDeleted">
|
||||
Whether computer account or managed domain account is deleted or not.
|
||||
Note: there may be multiple deleted objects with the same name. In such case, password for most recently deleted object is returned
|
||||
</param>
|
||||
<returns>Password, current password expiration time and optional password history. Passwords returned are plain text</returns>
|
||||
<remarks>
|
||||
<para>Name of local admin account is not stored by solution. Caller is expected to know name of local managed account</para>
|
||||
<para>
|
||||
PDS does not try to guess domain or forest name from computer name - it searches against Global Catalog interface of AD forest passed in <paramref name="ForestName"/> parameter
|
||||
</para>
|
||||
<para>Caller must have Read Admin Passsword permission on given computer or user object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</GetPassword>
|
||||
<GetSecurePassword>
|
||||
<summary>
|
||||
Calls PDS to retrieve password of managed account in given AD forest.
|
||||
Managed account can be either:
|
||||
* Domain computer local admin account
|
||||
* Managed domain account
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest, pass null as parameter value
|
||||
</param>
|
||||
<param name="Identity">
|
||||
When retrieving password of computer local admin account, pass name of computer where password of local admin account shall be retrieved. Name of the computer can be passed as one of the following:
|
||||
* Hostname, such as MyComputer
|
||||
* FQDN, such as mycomputer.mydomain.com
|
||||
* Distinguished name, such as cn=MyComputer,ou=MyComputers,dc=mydomain,dc=com
|
||||
<para/>
|
||||
When retrieving password of managed domain account, pas the name of domain account. Account name can be passed as one of the following:
|
||||
* sAMAccountName (without domain)
|
||||
* userPrincipalName
|
||||
* distinguishedName
|
||||
</param>
|
||||
<param name="Type">
|
||||
Type of the account to retrieve password for. Can be one of the supported account types:
|
||||
* LocalComputerAdmin
|
||||
* ManagedDomainAccount
|
||||
</param>
|
||||
<param name="IncludePasswordHistory">Whether or not to include password history</param>
|
||||
<param name="IsDeleted">
|
||||
Whether computer account or managed domain account is deleted or not.
|
||||
Note: there may be multiple deleted objects with the same name. In such case, password for most recently deleted object is returned
|
||||
</param>
|
||||
<returns>Password, current password expiration time and optional password history. Passwords returned as secure strings</returns>
|
||||
<remarks>
|
||||
<para>Name of local admin account is not stored by solution. Caller is expected to know name of local managed account</para>
|
||||
<para>
|
||||
PDS does not try to guess domain or forest name from computer name - it searches against Global Catalog interface of AD forest passed in <paramref name="ForestName"/> parameter
|
||||
</para>
|
||||
<para>Caller must have Read Admin Passsword permission on given computer or user object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</GetSecurePassword>
|
||||
<ResetPassword>
|
||||
<summary>
|
||||
Calls PDS to request reset of for given managed account in given AD forest.
|
||||
Managed account can be either:
|
||||
* Domain computer local admin account
|
||||
* Managed domain account
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest, pass null as parameter value
|
||||
</param>
|
||||
<param name="Identity">Name of computer where password of local admin account shall be reset</param>
|
||||
<param name="Type">
|
||||
Type of the managed account to reset password for. Can be one of the supported account types:
|
||||
* LocalComputerAdmin
|
||||
* ManagedDomainAccount
|
||||
</param>
|
||||
<param name="WhenEffective">When password reset shall occur.
|
||||
If type of account is local computer admin account, then password will be reset during next GPO update cycle on given computer after this time.
|
||||
If type of account is managed domain account, and WhenEffective is in the past, then password is reset immediately. If WhenEffective is in the future, then password will be scheduled for reset according to WhenEffective parameter.
|
||||
</param>
|
||||
<returns>Information about result of operation along with computer name and computer DN</returns>
|
||||
<remarks>
|
||||
<para>Caller must have Reset Admin Passsword permission on given computer or user object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</ResetPassword>
|
||||
<GetLocalAdminPassword>
|
||||
<summary>
|
||||
Calls PDS to retrieve password of managed local admin account of given computer in given AD forest
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest, pass null as parameter value
|
||||
</param>
|
||||
<param name="ComputerName">
|
||||
Name of computer where password of local admin account shall be reset. Name of the computer can be passed as one of the following:
|
||||
* Hostname, such as MyComputer
|
||||
* FQDN, such as mycomputer.mydomain.com
|
||||
* Distinguished name, such as cn=MyComputer,ou=MyComputers,dc=mydomain,dc=com
|
||||
</param>
|
||||
<param name="IncludePasswordHistory">Whether or not to include password history</param>
|
||||
<param name="ComputerIsDeleted">
|
||||
Whether computer is deleted or not.
|
||||
Note: there may be multiple deleted computer objects with the same name. In such case, password for most recently deleted computer is returned
|
||||
</param>
|
||||
<returns>Password, current password expiration time and optional password history</returns>
|
||||
<remarks>
|
||||
<para>Name of local admin account is not stored by solution. Caller is expected to know name of local managed account</para>
|
||||
<para>
|
||||
PDS does not try to guess domain or forest name from computer name - it searches against Global Catalog interface of AD forest passed in <paramref name="ForestName"/> parameter
|
||||
</para>
|
||||
<para>Caller must have Read Local Admin Passsword permission on given computer object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</GetLocalAdminPassword>
|
||||
<ResetLocalAdminPassword>
|
||||
<summary>
|
||||
Calls PDS to request reset of managed local admin password for given computer in given AD forest.
|
||||
</summary>
|
||||
<param name="ForestName">
|
||||
Name of AD forest.
|
||||
Forest must be marked as supported in PDS configuration.
|
||||
For local forest, pass null as parameter value
|
||||
</param>
|
||||
<param name="ComputerName">Name of computer where password of local admin account shall be reset</param>
|
||||
<param name="WhenEffective">When password reset shall occur. Password will be reset during next GPO update cycle on given computer after this time </param>
|
||||
<returns>Information about result of operation along with computer name and computer DN</returns>
|
||||
<remarks>
|
||||
<para>Caller must have Reset Local Admin Passsword permission on given computer object</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</ResetLocalAdminPassword>
|
||||
<GetPublicKeys>
|
||||
<summary>
|
||||
Asks PDS to return public keys for all available key pairs.
|
||||
</summary>
|
||||
<returns>Returns list of all public keys managed by PDS, along with type of the key, size in bits, and key ID</returns>
|
||||
<remarks>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetPublicKeys>
|
||||
<GetSupportedForestNames>
|
||||
<summary>
|
||||
Asks PDS to return list of all supported AD forests.
|
||||
</summary>
|
||||
<returns>
|
||||
Returns list of names of all supported AD forests.
|
||||
<para>In single forest deployments, list is empty, meaning that only supported forest is the forest where solution is deployed.</para>
|
||||
</returns>
|
||||
<remarks>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetSupportedForestNames>
|
||||
|
||||
<GetPublicKey>
|
||||
<summary>
|
||||
Asks PDS to return public key with specified key ID
|
||||
</summary>
|
||||
<param name="KeyId">Identifies key pair for which public key is returned</param>
|
||||
<returns>Returns public key of key pair with given KeyID, along with key ID</returns>
|
||||
<remarks>
|
||||
<para>No specific permissions required</para>
|
||||
<para>Call is not audited</para>
|
||||
</remarks>
|
||||
</GetPublicKey>
|
||||
<GenerateKeyPair>
|
||||
<summary>
|
||||
<para>Calls PDS to generate new RSA key pair.</para>
|
||||
<para>
|
||||
PDS keeps private key of key pair in own storage and uses it for password decryption.
|
||||
Public key is put to GPO by an administrator and managed machines use it to encrypt the password of managed local admin account when reporting it to AD.
|
||||
</para>
|
||||
<para>PDS also uses public key to encrypt password of managed domain account - ID of key to use is specified in PDS configuration file.</para>
|
||||
</summary>
|
||||
<param name="KeySize">
|
||||
Specifies desired RSA key size<br/>
|
||||
Key size must be one of those allowed by PDS - see <see cref="GetSupportedKeySizes"/> method
|
||||
</param>
|
||||
<returns>Return public key of newly generated key pair, along with key ID assigned to newly generated key pair</returns>
|
||||
<remarks>
|
||||
<para>Caller must have Key Admin role. For callers without role, AccessDenied exception is thrown. To find out, if caller has Key Admin role, call method <see cref="IsPDSAdmin"/>.</para>
|
||||
<para>By default, Key Admin role is assigned to Enterprise Admins group and can be changed via PDS configuration file.</para>
|
||||
<para>Call is audited on PDS</para>
|
||||
</remarks>
|
||||
</GenerateKeyPair>
|
||||
</PdsWrapper>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mRemoteV1/Firefox/icudt58.dll
Normal file
BIN
mRemoteV1/Firefox/icudt58.dll
Normal file
Binary file not shown.
BIN
mRemoteV1/Firefox/icuin58.dll
Normal file
BIN
mRemoteV1/Firefox/icuin58.dll
Normal file
Binary file not shown.
BIN
mRemoteV1/Firefox/icuuc58.dll
Normal file
BIN
mRemoteV1/Firefox/icuuc58.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4
mRemoteV1/Properties/Settings.Designer.cs
generated
4
mRemoteV1/Properties/Settings.Designer.cs
generated
@@ -12,7 +12,7 @@ namespace mRemoteNG {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -2103,7 +2103,7 @@ namespace mRemoteNG {
|
||||
|
||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://mremoteng.org/")]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("https://gcstoragedownload.blob.core.windows.net/download/mRemoteNG/")]
|
||||
public string UpdateAddress {
|
||||
get {
|
||||
return ((string)(this["UpdateAddress"]));
|
||||
|
||||
@@ -522,7 +522,7 @@
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UpdateAddress" Type="System.String" Scope="Application">
|
||||
<Value Profile="(Default)">https://mremoteng.org/</Value>
|
||||
<Value Profile="(Default)">https://gcstoragedownload.blob.core.windows.net/download/mRemoteNG/</Value>
|
||||
</Setting>
|
||||
<Setting Name="ConDefaultLoadBalanceInfo" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
|
||||
15497
mRemoteV1/Resources/Language/Language.Designer.cs
generated
15497
mRemoteV1/Resources/Language/Language.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -2700,4 +2700,7 @@ This page will walk you through the process of upgrading your connections file o
|
||||
<data name="ChangeConnectionResolutionError" xml:space="preserve">
|
||||
<value>An error occurred while trying to change the connection resolution to host '{0}'</value>
|
||||
</data>
|
||||
<data name="strUseAdmPwd" xml:space="preserve">
|
||||
<value>Use AdmPwd.E to retrieve the password</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -182,8 +182,24 @@ namespace mRemoteNG.Tools
|
||||
replacement = _connectionInfo.Password;
|
||||
if (string.IsNullOrEmpty(replacement) && Settings.Default.EmptyCredentials == "custom")
|
||||
replacement = new LegacyRijndaelCryptographyProvider()
|
||||
.Decrypt(Convert.ToString(Settings.Default.DefaultPassword),
|
||||
Runtime.EncryptionKey);
|
||||
.Decrypt(Convert.ToString(Settings.Default.DefaultPassword),
|
||||
Runtime.EncryptionKey);
|
||||
if (string.IsNullOrEmpty(replacement) && Settings.Default.EmptyCredentials == "admpwd")
|
||||
{
|
||||
if (_connectionInfo.Domain == ".")
|
||||
replacement = AdmPwd.PDSUtils.PdsWrapper.GetPassword(null, _connectionInfo.Hostname, AdmPwd.Types.IdentityType.LocalComputerAdmin, false, false).Password;
|
||||
else
|
||||
{
|
||||
var userName = _connectionInfo.Username;
|
||||
if (string.IsNullOrEmpty(userName))
|
||||
if (Settings.Default.EmptyCredentials == "windows")
|
||||
userName = Environment.UserName;
|
||||
else if (Settings.Default.EmptyCredentials == "custom")
|
||||
userName = Settings.Default.DefaultUsername;
|
||||
|
||||
replacement = AdmPwd.PDSUtils.PdsWrapper.GetPassword(_connectionInfo.Domain, userName, AdmPwd.Types.IdentityType.ManagedDomainAccount, false, false).Password;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "domain":
|
||||
replacement = _connectionInfo.Domain;
|
||||
|
||||
@@ -68,7 +68,8 @@ namespace mRemoteNG.UI.Controls.Base
|
||||
Color fore;
|
||||
Color glyph;
|
||||
Color checkBorder;
|
||||
|
||||
if (_themeManager.ActiveTheme == null)
|
||||
return;
|
||||
var back = _themeManager.ActiveTheme.ExtendedPalette.getColor("CheckBox_Background");
|
||||
if (Enabled)
|
||||
{
|
||||
|
||||
@@ -25,10 +25,13 @@ namespace mRemoteNG.UI.Controls.Base
|
||||
_themeManager = ThemeManager.getInstance();
|
||||
if (!_themeManager.ThemingActive) return;
|
||||
// Use the Dialog_* colors since Labels generally have the same colors as panels/dialogs/windows/etc...
|
||||
BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("Dialog_Background");
|
||||
ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground");
|
||||
FontOverrider.FontOverride(this);
|
||||
Invalidate();
|
||||
if (_themeManager.ActiveTheme != null)
|
||||
{
|
||||
BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("Dialog_Background");
|
||||
ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("Dialog_Foreground");
|
||||
FontOverrider.FontOverride(this);
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -78,6 +78,8 @@ namespace mRemoteNG.UI.Controls.Base
|
||||
// Init
|
||||
var g = e.Graphics;
|
||||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
if (_themeManager.ActiveTheme == null)
|
||||
return;
|
||||
|
||||
var fore = _themeManager.ActiveTheme.ExtendedPalette.getColor("CheckBox_Text");
|
||||
var outline = _themeManager.ActiveTheme.ExtendedPalette.getColor("CheckBox_Border");
|
||||
|
||||
@@ -20,9 +20,12 @@ namespace mRemoteNG.UI.Controls.Base
|
||||
base.OnCreateControl();
|
||||
_themeManager = ThemeManager.getInstance();
|
||||
if (!_themeManager.ThemingActive) return;
|
||||
ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Foreground");
|
||||
BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Background");
|
||||
Invalidate();
|
||||
if (_themeManager.ActiveTheme != null)
|
||||
{
|
||||
ForeColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Foreground");
|
||||
BackColor = _themeManager.ActiveTheme.ExtendedPalette.getColor("TextBox_Background");
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CredentialsPage));
|
||||
this.pnlDefaultCredentials = new System.Windows.Forms.Panel();
|
||||
this.chkUseAdmPwd = new mRemoteNG.UI.Controls.Base.NGCheckBox();
|
||||
this.radCredentialsCustom = new mRemoteNG.UI.Controls.Base.NGRadioButton();
|
||||
this.lblDefaultCredentials = new mRemoteNG.UI.Controls.Base.NGLabel();
|
||||
this.radCredentialsNoInfo = new mRemoteNG.UI.Controls.Base.NGRadioButton();
|
||||
@@ -45,6 +45,7 @@
|
||||
//
|
||||
// pnlDefaultCredentials
|
||||
//
|
||||
this.pnlDefaultCredentials.Controls.Add(this.chkUseAdmPwd);
|
||||
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsCustom);
|
||||
this.pnlDefaultCredentials.Controls.Add(this.lblDefaultCredentials);
|
||||
this.pnlDefaultCredentials.Controls.Add(this.radCredentialsNoInfo);
|
||||
@@ -57,18 +58,32 @@
|
||||
this.pnlDefaultCredentials.Controls.Add(this.lblCredentialsDomain);
|
||||
this.pnlDefaultCredentials.Location = new System.Drawing.Point(3, 3);
|
||||
this.pnlDefaultCredentials.Name = "pnlDefaultCredentials";
|
||||
this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 175);
|
||||
this.pnlDefaultCredentials.Size = new System.Drawing.Size(596, 210);
|
||||
this.pnlDefaultCredentials.TabIndex = 0;
|
||||
//
|
||||
// chkUseAdmPwd
|
||||
//
|
||||
this.chkUseAdmPwd._mice = mRemoteNG.UI.Controls.Base.NGCheckBox.MouseState.OUT;
|
||||
this.chkUseAdmPwd.AutoSize = true;
|
||||
this.chkUseAdmPwd.Enabled = false;
|
||||
this.chkUseAdmPwd.Location = new System.Drawing.Point(140, 149);
|
||||
this.chkUseAdmPwd.Name = "chkUseAdmPwd";
|
||||
this.chkUseAdmPwd.Size = new System.Drawing.Size(214, 17);
|
||||
this.chkUseAdmPwd.TabIndex = 10;
|
||||
this.chkUseAdmPwd.Text = "use AdmPwd.E to retrieve the password";
|
||||
this.chkUseAdmPwd.UseVisualStyleBackColor = true;
|
||||
this.chkUseAdmPwd.CheckedChanged += new System.EventHandler(this.chkUseAdmPwd_CheckedChanged);
|
||||
//
|
||||
// radCredentialsCustom
|
||||
//
|
||||
this.radCredentialsCustom.AutoSize = true;
|
||||
this.radCredentialsCustom.BackColor = System.Drawing.Color.Transparent;
|
||||
this.radCredentialsCustom.Location = new System.Drawing.Point(16, 69);
|
||||
this.radCredentialsCustom.Name = "radCredentialsCustom";
|
||||
this.radCredentialsCustom.Size = new System.Drawing.Size(87, 17);
|
||||
this.radCredentialsCustom.TabIndex = 3;
|
||||
this.radCredentialsCustom.Text = "the following:";
|
||||
this.radCredentialsCustom.UseVisualStyleBackColor = true;
|
||||
this.radCredentialsCustom.UseVisualStyleBackColor = false;
|
||||
this.radCredentialsCustom.CheckedChanged += new System.EventHandler(this.radCredentialsCustom_CheckedChanged);
|
||||
//
|
||||
// lblDefaultCredentials
|
||||
@@ -83,6 +98,7 @@
|
||||
// radCredentialsNoInfo
|
||||
//
|
||||
this.radCredentialsNoInfo.AutoSize = true;
|
||||
this.radCredentialsNoInfo.BackColor = System.Drawing.Color.Transparent;
|
||||
this.radCredentialsNoInfo.Checked = true;
|
||||
this.radCredentialsNoInfo.Location = new System.Drawing.Point(16, 31);
|
||||
this.radCredentialsNoInfo.Name = "radCredentialsNoInfo";
|
||||
@@ -90,23 +106,24 @@
|
||||
this.radCredentialsNoInfo.TabIndex = 1;
|
||||
this.radCredentialsNoInfo.TabStop = true;
|
||||
this.radCredentialsNoInfo.Text = "no information";
|
||||
this.radCredentialsNoInfo.UseVisualStyleBackColor = true;
|
||||
this.radCredentialsNoInfo.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// radCredentialsWindows
|
||||
//
|
||||
this.radCredentialsWindows.AutoSize = true;
|
||||
this.radCredentialsWindows.BackColor = System.Drawing.Color.Transparent;
|
||||
this.radCredentialsWindows.Location = new System.Drawing.Point(16, 50);
|
||||
this.radCredentialsWindows.Name = "radCredentialsWindows";
|
||||
this.radCredentialsWindows.Size = new System.Drawing.Size(227, 17);
|
||||
this.radCredentialsWindows.TabIndex = 2;
|
||||
this.radCredentialsWindows.Text = "my current credentials (windows logon info)";
|
||||
this.radCredentialsWindows.UseVisualStyleBackColor = true;
|
||||
this.radCredentialsWindows.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// txtCredentialsDomain
|
||||
//
|
||||
this.txtCredentialsDomain.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.txtCredentialsDomain.Enabled = false;
|
||||
this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 147);
|
||||
this.txtCredentialsDomain.Location = new System.Drawing.Point(140, 172);
|
||||
this.txtCredentialsDomain.Name = "txtCredentialsDomain";
|
||||
this.txtCredentialsDomain.Size = new System.Drawing.Size(150, 20);
|
||||
this.txtCredentialsDomain.TabIndex = 9;
|
||||
@@ -153,7 +170,7 @@
|
||||
// lblCredentialsDomain
|
||||
//
|
||||
this.lblCredentialsDomain.Enabled = false;
|
||||
this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 150);
|
||||
this.lblCredentialsDomain.Location = new System.Drawing.Point(34, 175);
|
||||
this.lblCredentialsDomain.Name = "lblCredentialsDomain";
|
||||
this.lblCredentialsDomain.Size = new System.Drawing.Size(100, 13);
|
||||
this.lblCredentialsDomain.TabIndex = 8;
|
||||
@@ -166,7 +183,6 @@
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.pnlDefaultCredentials);
|
||||
this.Name = "CredentialsPage";
|
||||
this.PageIcon = ((System.Drawing.Icon)(resources.GetObject("$this.PageIcon")));
|
||||
this.Size = new System.Drawing.Size(610, 489);
|
||||
this.pnlDefaultCredentials.ResumeLayout(false);
|
||||
this.pnlDefaultCredentials.PerformLayout();
|
||||
@@ -186,5 +202,6 @@
|
||||
internal Controls.Base.NGLabel lblCredentialsPassword;
|
||||
internal Controls.Base.NGTextBox txtCredentialsUsername;
|
||||
internal Controls.Base.NGLabel lblCredentialsDomain;
|
||||
private Controls.Base.NGCheckBox chkUseAdmPwd;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
lblCredentialsUsername.Text = Language.strLabelUsername;
|
||||
lblCredentialsPassword.Text = Language.strLabelPassword;
|
||||
lblCredentialsDomain.Text = Language.strLabelDomain;
|
||||
chkUseAdmPwd.Text = Language.strUseAdmPwd;
|
||||
}
|
||||
|
||||
public override void LoadSettings()
|
||||
@@ -45,6 +46,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
case "custom":
|
||||
radCredentialsCustom.Checked = true;
|
||||
break;
|
||||
case "admpwd":
|
||||
radCredentialsCustom.Checked = true;
|
||||
chkUseAdmPwd.Checked = true;
|
||||
break;
|
||||
}
|
||||
|
||||
txtCredentialsUsername.Text = Settings.Default.DefaultUsername;
|
||||
@@ -65,7 +70,10 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
}
|
||||
else if (radCredentialsCustom.Checked)
|
||||
{
|
||||
Settings.Default.EmptyCredentials = "custom";
|
||||
if (chkUseAdmPwd.Checked)
|
||||
Settings.Default.EmptyCredentials = "admpwd";
|
||||
else
|
||||
Settings.Default.EmptyCredentials = "custom";
|
||||
}
|
||||
|
||||
Settings.Default.DefaultUsername = txtCredentialsUsername.Text;
|
||||
@@ -84,6 +92,13 @@ namespace mRemoteNG.UI.Forms.OptionsPages
|
||||
txtCredentialsUsername.Enabled = radCredentialsCustom.Checked;
|
||||
txtCredentialsPassword.Enabled = radCredentialsCustom.Checked;
|
||||
txtCredentialsDomain.Enabled = radCredentialsCustom.Checked;
|
||||
chkUseAdmPwd.Enabled = radCredentialsCustom.Checked;
|
||||
}
|
||||
|
||||
private void chkUseAdmPwd_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
lblCredentialsPassword.Enabled = !chkUseAdmPwd.Checked;
|
||||
txtCredentialsPassword.Enabled = !chkUseAdmPwd.Checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,29 +117,4 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.PageIcon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAA
|
||||
AAA+ncp7NpbR5TOQzOsyi8vtO5XCh////wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||
/wH///8BQqzhzcTr9/9/4fb/n+b3/zKKye86kLqR////Af///wH///8B////Af///wH///8B////Af//
|
||||
/wH///8B////AUSw4//G9Pv/Q9bx/0jb9f+C4fX/MYjI8TmNt5n///8B////Af///wH///8B////Af//
|
||||
/wH///8B////Af///wFEsOPzu+/6/znR8f8oxe7/Ttz2/4Xi9/8yi8rvOYu1m////wH///8B////Af//
|
||||
/wH///8B////Af///wH///8BRLDj//D8/v+w7vr/Q9j0/yjI7v9B1/T/ieL3/zKLy+04iLKj////Af//
|
||||
/wH///8B////Af///wH///8B////AUSw45dEsOP/RLDj/6vq+f9O2PP/K8nv/z3W8/+K4ff/MorK7zOD
|
||||
uN0pfdb/LIXY/zaOwcv///8B////Af///wH///8B////AUSw4//x/P7/u/H7/3vk9v8o0vD/N9T1/4Pg
|
||||
9v8+qeP/oPP8/6n1/P8rgtf/NYu/z////wH///8B////Af///wFEsOOXRLDj/0Wy4/92xer/rO76/znW
|
||||
8v9N2/X/ZeT3/zzO8v8yye//he/7/yuB1/81iLvV////Af///wH///8B////Af///wFEsOMDRLDjl2/E
|
||||
6v+A5ff/PdHx/13b9f9p3/b/UNfz/zTN7/+F7/v/KX/W/zSGutn///8B////Af///wH///8B////AUSw
|
||||
4//V9/z/ief4/37k9/9+5Pf/fuT3/4Ll9/9H1vL/OM7w/671/P8pfNb/////Af///wH///8B////Af//
|
||||
/wFEsOP/vvL7/37k9/9+5Pf/geX3/5Tp+P+88fv/i9rz/0nd9f/B+P3/MJDa/////wH///8B////Af//
|
||||
/wH///8BRLDj/974/P+N5/j/fuT3/5Tp+P+86fj/RLDj/0Ks4//u/P7/Mpjd/zmVyL////8B////Af//
|
||||
/wH///8B////AUSw45dEsOP/zvX8/43n+P+h7Pn/RLDj/0Sw4///////OaHf/zmVyL////8B////Af//
|
||||
/wH///8B////Af///wH///8BRLDjl0Sw4//O9fz/nuv5/77y+//+////RLDj/0Kr353///8B////Af//
|
||||
/wH///8B////Af///wH///8B////Af///wFEsOOXRLDj/974/P/e+Pz/RLDj/0Sw45f///8B////Af//
|
||||
/wH///8B////Af///wH///8B////Af///wH///8B////AUSw45dEsOP/RLDj/0Sw45f///8B////Af//
|
||||
/wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
|
||||
//8AAP//AAD//w==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -705,12 +705,12 @@
|
||||
</userSettings>
|
||||
<applicationSettings>
|
||||
<mRemoteNG.Settings>
|
||||
<setting name="UpdateAddress" serializeAs="String">
|
||||
<value>https://mremoteng.org/</value>
|
||||
</setting>
|
||||
<setting name="SupportedUICultures" serializeAs="String">
|
||||
<value>cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,ko-KR,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW</value>
|
||||
</setting>
|
||||
<setting name="UpdateAddress" serializeAs="String">
|
||||
<value>https://gcstoragedownload.blob.core.windows.net/download/mRemoteNG/</value>
|
||||
</setting>
|
||||
<setting name="SupportedUICultures" serializeAs="String">
|
||||
<value>cs-CZ,de,el,en,en-US,es-AR,es,fr,hu,it,ja-JP,ko-KR,nb-NO,nl,pt,pt-BR,pl,ru,uk,tr-TR,zh-CN,zh-TW</value>
|
||||
</setting>
|
||||
</mRemoteNG.Settings>
|
||||
</applicationSettings>
|
||||
|
||||
|
||||
@@ -47,17 +47,20 @@
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AdmPwd.PDSWrapper, Version=7.7.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Greycorbel.AdmPwd-E.PDSWrapper.7.7.2\lib\net45\AdmPwd.PDSWrapper.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ADTree">
|
||||
<HintPath>References\ADTree.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BouncyCastle.Crypto, Version=1.8.1.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
|
||||
<HintPath>..\packages\BouncyCastle.1.8.1\lib\BouncyCastle.Crypto.dll</HintPath>
|
||||
<Reference Include="BouncyCastle.Crypto, Version=1.8.5.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
|
||||
<HintPath>..\packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Geckofx-Core, Version=45.0.32.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
|
||||
<HintPath>..\packages\Geckofx45.45.0.32\lib\net45\Geckofx-Core.dll</HintPath>
|
||||
<Reference Include="Geckofx-Core, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
|
||||
<HintPath>..\packages\Geckofx45.45.0.34\lib\net45\Geckofx-Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Geckofx-Winforms, Version=45.0.32.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
|
||||
<HintPath>..\packages\Geckofx45.45.0.32\lib\net45\Geckofx-Winforms.dll</HintPath>
|
||||
<Reference Include="Geckofx-Winforms, Version=45.0.34.0, Culture=neutral, PublicKeyToken=3209ac31600d1857, processorArchitecture=x86">
|
||||
<HintPath>..\packages\Geckofx45.45.0.34\lib\net45\Geckofx-Winforms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\log4net.2.0.8\lib\net45-full\log4net.dll</HintPath>
|
||||
@@ -71,8 +74,8 @@
|
||||
<Reference Include="ObjectListView, Version=2.9.1.1072, Culture=neutral, PublicKeyToken=b1c5bf581481bcd4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\ObjectListView.Official.2.9.1\lib\net20\ObjectListView.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Renci.SshNet, Version=2016.0.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SSH.NET.2016.0.0\lib\net40\Renci.SshNet.dll</HintPath>
|
||||
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
@@ -89,20 +92,20 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>References\VncSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking, Version=2.16.0.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.2.16.1\lib\net40\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking, Version=3.0.6.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.3.0.6\lib\net40\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2003, Version=2.16.0.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2003.2.16.1\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2003.dll</HintPath>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2003, Version=3.0.6.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2003.3.0.6\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2003.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2012, Version=2.16.0.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2012.2.16.1\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2012.dll</HintPath>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2012, Version=3.0.6.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2012.3.0.6\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2012.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2013, Version=2.16.0.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2013.2.16.1\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2013.dll</HintPath>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2013, Version=3.0.6.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2013.3.0.6\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2013.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2015, Version=2.16.0.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2015.2.16.1\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll</HintPath>
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking.ThemeVS2015, Version=3.0.6.0, Culture=neutral, PublicKeyToken=5cded1a1a0a7b481, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\DockPanelSuite.ThemeVS2015.3.0.6\lib\net40\WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
@@ -969,25 +972,15 @@
|
||||
<None Include="Schemas\mremoteng_confcons_v2_7.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<Content Include="Schemas\mremoteng_confcons_v2_6.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="Schemas\mremoteng_credrepo_list_v1_0.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="Schemas\mremoteng_creds_v1_0.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Docs\PDSConfigWrapper.xml" />
|
||||
<Content Include="Docs\PdsWrapper.xml" />
|
||||
<Content Include="Firefox\AccessibleMarshal.dll" />
|
||||
<Content Include="Firefox\breakpadinjector.dll" />
|
||||
<Content Include="Firefox\d3dcompiler_47.dll" />
|
||||
<Content Include="Firefox\freebl3.dll" />
|
||||
<Content Include="Firefox\icudt56.dll" />
|
||||
<Content Include="Firefox\icuin56.dll" />
|
||||
<Content Include="Firefox\icuuc56.dll" />
|
||||
<Content Include="Firefox\icudt58.dll" />
|
||||
<Content Include="Firefox\icuin58.dll" />
|
||||
<Content Include="Firefox\icuuc58.dll" />
|
||||
<Content Include="Firefox\lgpllibs.dll" />
|
||||
<Content Include="Firefox\libEGL.dll" />
|
||||
<Content Include="Firefox\libGLESv2.dll" />
|
||||
@@ -1000,6 +993,18 @@
|
||||
<Content Include="Firefox\sandboxbroker.dll" />
|
||||
<Content Include="Firefox\softokn3.dll" />
|
||||
<Content Include="Firefox\xul.dll" />
|
||||
<Content Include="Schemas\mremoteng_confcons_v2_6.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="Schemas\mremoteng_credrepo_list_v1_0.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Include="Schemas\mremoteng_creds_v1_0.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\Help\CMDSwitches.htm">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
@@ -1614,11 +1619,11 @@ powershell.exe -ExecutionPolicy Bypass -File "%25psScriptsDir%25\postbuild_mremo
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>echo $(ConfigurationName) > buildenv.tmp</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
<Import Project="..\packages\Geckofx45.45.0.32\build\Geckofx45.targets" Condition="Exists('..\packages\Geckofx45.45.0.32\build\Geckofx45.targets')" />
|
||||
<Import Project="..\packages\Geckofx45.45.0.34\build\Geckofx45.targets" Condition="Exists('..\packages\Geckofx45.45.0.34\build\Geckofx45.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Geckofx45.45.0.32\build\Geckofx45.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Geckofx45.45.0.32\build\Geckofx45.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Geckofx45.45.0.34\build\Geckofx45.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Geckofx45.45.0.34\build\Geckofx45.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,13 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="BouncyCastle" version="1.8.1" targetFramework="net46" />
|
||||
<package id="DockPanelSuite" version="2.16.1" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2003" version="2.16.1" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2012" version="2.16.1" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2013" version="2.16.1" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2015" version="2.16.1" targetFramework="net46" />
|
||||
<package id="Geckofx45" version="45.0.32" targetFramework="net46" />
|
||||
<package id="BouncyCastle" version="1.8.5" targetFramework="net46" />
|
||||
<package id="DockPanelSuite" version="3.0.6" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2003" version="3.0.6" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2012" version="3.0.6" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2013" version="3.0.6" targetFramework="net46" />
|
||||
<package id="DockPanelSuite.ThemeVS2015" version="3.0.6" targetFramework="net46" />
|
||||
<package id="Geckofx45" version="45.0.34" targetFramework="net46" />
|
||||
<package id="Greycorbel.AdmPwd-E.PDSWrapper" version="7.7.2" targetFramework="net46" />
|
||||
<package id="log4net" version="2.0.8" targetFramework="net46" />
|
||||
<package id="ObjectListView.Official" version="2.9.1" targetFramework="net46" />
|
||||
<package id="SSH.NET" version="2016.0.0" targetFramework="net46" />
|
||||
<package id="SSH.NET" version="2016.1.0" targetFramework="net46" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user