实例介绍
IAP桌面是一个远程桌面和SSH客户端,允许您从任何地方连接到Google Cloud VM实例。它适用于Windows 11/10/8.1系统,无需管理员权限即可访问Linux和Windows VM。
IAP桌面通过身份感知代理(IAP)连接到VM实例,使您可以:
- 连接到没有公共IP地址的VM实例
- 通过互联网从任何地方连接
- 应用细粒度访问控制,定义谁可以访问哪些VM
- 使用访问级别限制访问时间或地点
- 利用BeyondCorp Enterprise限制访问信任的设备
通过远程桌面连接到Windows VM时,IAP桌面是一个功能齐全的远程桌面客户端,支持:
- 同时使用多个远程桌面会话
- 在全屏和标签式远程桌面会话之间切换
- 通过SFTP上传和下载文件
连接到Linux VM时,IAP桌面包含一个SSH客户端和终端,使您可以:
- 并行使用多个SSH会话,并使用标签在它们之间切换
- 使用SFTP上传和下载文件
IAP桌面提供了一个汇总视图,让您可以连接到多个项目和Google Cloud组织的VM,查看诊断信息,如日志和串行端口输出,远程将VM加入Active Directory,执行其他常见操作,如启动或停止VM。
使用IAP桌面,您还可以让客户端应用程序通过IAP连接到Google Cloud VM,支持的客户端应用程序包括SQL Server管理工作室、MySQL Shell、Chrome等。
【实例截图】
链接windows服务器
连接linux服务器
连接sql server 等应用程序
【核心代码】
文件清单
└── iap-desktop-aa924cec449933d72a66d597492e425b04312661
├── CONTRIBUTING.md
├── dependencies
│ ├── build.bat
│ ├── image
│ │ └── Dockerfile
│ ├── kokoro
│ │ └── release.cfg
│ ├── makefile
│ ├── README.md
│ └── sources
│ ├── dockpanelsuite
│ │ ├── makefile
│ │ └── patches
│ │ ├── 0001-Refresh-focus-when-active-pane-has-changed.patch
│ │ ├── 0002-Refactor-DockPanelColorPalette.patch
│ │ └── 0003-Add-accent-color-for-tabs.patch
│ ├── libssh2
│ │ ├── Google.Solutions.ThirdParty.Libssh2.targets
│ │ ├── makefile
│ │ ├── vcpkg-ports
│ │ │ ├── libssh2
│ │ │ │ ├── portfile.cmake
│ │ │ │ └── vcpkg.json
│ │ │ └── openssl
│ │ │ ├── install-pc-files.cmake
│ │ │ ├── openssl.pc.in
│ │ │ ├── portfile.cmake
│ │ │ ├── usage
│ │ │ ├── vcpkg-cmake-wrapper.cmake.in
│ │ │ ├── vcpkg.json
│ │ │ └── windows
│ │ │ └── portfile.cmake
│ │ └── vcpkg-triplets
│ │ ├── libssh2-x64-windows-mixed.cmake
│ │ └── libssh2-x86-windows-mixed.cmake
│ ├── tsc
│ │ ├── Google.Solutions.Tsc.csproj
│ │ ├── Google.Solutions.Tsc.sln
│ │ ├── makefile
│ │ ├── MsRdpClient.cs
│ │ └── Properties
│ │ └── AssemblyInfo.cs
│ └── vtnetcore
│ ├── makefile
│ └── patches
│ ├── 0001-Handle-OSC-sequences-with-empty-text-parameters.patch
│ ├── 0002-Fix-escape-sequences-for-bracketed-text-mode.patch
│ ├── 0003-Detect-key-modifier-options-XTMODKEYS.patch
│ ├── 0004-Handle-single-parameter-OSC-sequences.patch
│ ├── 0005-Fix-throw-statement-to-avoid-cascading-exception.patch
│ ├── 0006-Use-TraceSource-for-logging.patch
│ ├── 0007-Include-symbols-in-NuGet-package.patch
│ ├── 0008-Handle-xterm-input-errors-more-gracefully.patch
│ ├── 0009-Propagate-terminal-attributes.patch
│ ├── 0010-Allow-custom-default-attributes.patch
│ ├── 0011-Expose-properties-for-back-foreground-color.patch
│ ├── 0012-Add-missing-ISO-8613-3-color-mappings.patch
│ ├── 0013-Change-TerminalColor-class-to-be-readonly.patch
│ └── 0014-Fix-Restore-Cursor-command.patch
├── doc
│ ├── images
│ │ ├── Architecture.svg
│ │ ├── Client_350.png
│ │ ├── Client_700.png
│ │ ├── documentation.png
│ │ ├── download.png
│ │ ├── iapdesktop-animated-800.gif
│ │ ├── Manage_1024.gif
│ │ ├── Manage_1400.gif
│ │ ├── Manage_350.gif
│ │ ├── Manage_350.png
│ │ ├── Manage_512.gif
│ │ ├── Overview.png
│ │ ├── pix.gif
│ │ ├── RemoteDesktop_1400.gif
│ │ ├── RemoteDesktop_350.png
│ │ ├── Screenshot_1400.png
│ │ ├── Screenshot_350.png
│ │ ├── SSH_1400.gif
│ │ ├── SSH_350.gif
│ │ └── SSH_350.png
│ └── site
│ ├── makefile
│ └── sources
│ ├── docs
│ │ ├── client-application-configuration.md
│ │ ├── command-line-options.md
│ │ ├── connect-by-url.md
│ │ ├── connect-linux.md
│ │ ├── connect-sqlserver.md
│ │ ├── connect-to-google-cloud.md
│ │ ├── connect-windows.md
│ │ ├── control-access-to-vms.md
│ │ ├── create-profiles.md
│ │ ├── group-policies-deployment.md
│ │ ├── group-policies.md
│ │ ├── group-policy-reference.md
│ │ ├── images
│ │ │ ├── 01-installer.png
│ │ │ ├── 02-installer.png
│ │ │ ├── 03-consent.png
│ │ │ ├── 03-signin.png
│ │ │ ├── 04-pick-project.png
│ │ │ ├── 05-explorer.png
│ │ │ ├── add-profile-2.png
│ │ │ ├── add-profile.png
│ │ │ ├── apicontrols-blocked.png
│ │ │ ├── apicontrols-settings.png
│ │ │ ├── caa-adcs-autoenrollment.png
│ │ │ ├── caa-adcs-template.png
│ │ │ ├── cloud.svg
│ │ │ ├── Connecting.png
│ │ │ ├── Connecting-SQLServer-Credentials.png
│ │ │ ├── Connecting-SQLServer.png
│ │ │ ├── Connecting-SSH.png
│ │ │ ├── Connection-Settings-Inheritance.png
│ │ │ ├── Connection-Settings.png
│ │ │ ├── Connection-Settings-SQL-Server.png
│ │ │ ├── Connection-Settings-SSH.png
│ │ │ ├── connect-via-internet.png
│ │ │ ├── connect-via-psc.png
│ │ │ ├── consent-trusted.png
│ │ │ ├── control-access-with-access-bindings.png
│ │ │ ├── control-access-with-iam.png
│ │ │ ├── control-access-with-vpc-sc-ingress-rules.png
│ │ │ ├── Credential-Prompt.png
│ │ │ ├── Event-Log.png
│ │ │ ├── favicon.ico
│ │ │ ├── Instance-Details.png
│ │ │ ├── Instance-Details-Warning.png
│ │ │ ├── logo.png
│ │ │ ├── Overview.png
│ │ │ ├── Policies.png
│ │ │ ├── Proxy-Settings.png
│ │ │ ├── RDP-Session.png
│ │ │ ├── screenshots
│ │ │ │ ├── Client_350.png
│ │ │ │ ├── Client_700.png
│ │ │ │ ├── Manage_1400.gif
│ │ │ │ ├── Manage_350.png
│ │ │ │ ├── Overview_1400.png
│ │ │ │ ├── Overview_350.png
│ │ │ │ ├── RemoteDesktop_1400.gif
│ │ │ │ ├── RemoteDesktop_350.png
│ │ │ │ ├── SSH_1400.gif
│ │ │ │ └── SSH_350.png
│ │ │ ├── Serial-Log.png
│ │ │ ├── SSH-Terminal.png
│ │ │ ├── switch-profiles.png
│ │ │ └── Usage-Report.png
│ │ ├── index.md
│ │ ├── install.md
│ │ ├── keyboard-shortcuts.md
│ │ ├── proxy-configuration.md
│ │ ├── security.md
│ │ ├── setup-caa-with-a-beyondcorp-certificate-access-policy.md
│ │ ├── setup-iap.md
│ │ ├── ssh-algorithms.md
│ │ ├── stylesheets
│ │ │ └── extra.css
│ │ ├── toolwindow-connection-settings.md
│ │ ├── toolwindow-eventlog.md
│ │ ├── toolwindow-instance-properties.md
│ │ ├── toolwindow-serial-port-output.md
│ │ ├── troubleshooting.md
│ │ ├── troubleshooting-rdp.md
│ │ ├── troubleshooting-signin.md
│ │ └── troubleshooting-ssh.md
│ ├── generate-releasenotes.ps1
│ ├── mkdocs.yml
│ └── overrides
│ ├── main.html
│ └── partials
│ └── header.html
├── LICENSE.txt
├── README.md
└── sources
├── build.bat
├── build.ps1
├── global.json
├── Google.Solutions.Apis
│ ├── Analytics
│ │ ├── MeasurementClient.cs
│ │ ├── MeasurementService.cs
│ │ └── MeasurementSession.cs
│ ├── ApiEventSource.cs
│ ├── ApiTraceSource.cs
│ ├── app.config
│ ├── Auth
│ │ ├── Gaia
│ │ │ ├── GaiaCodeFlow.cs
│ │ │ ├── GaiaOidcClient.cs
│ │ │ ├── GaiaOidcSession.cs
│ │ │ ├── GaiaPkceOidcClient.cs
│ │ │ ├── IGaiaOidcSession.cs
│ │ │ └── UnverifiedGaiaJsonWebToken.cs
│ │ ├── Iam
│ │ │ ├── AuthPortalCodeFlow.cs
│ │ │ ├── IPoolProviderLocator.cs
│ │ │ ├── IWorkforcePoolSession.cs
│ │ │ ├── NotSupportedForWorkloadIdentityException.cs
│ │ │ ├── StsService.cs
│ │ │ ├── WorkforcePoolClient.cs
│ │ │ ├── WorkforcePoolIdentity.cs
│ │ │ ├── WorkforcePoolProviderLocator.cs
│ │ │ └── WorkforcePoolSession.cs
│ │ ├── IAuthorization.cs
│ │ ├── IDeviceEnrollment.cs
│ │ ├── IJsonWebToken.cs
│ │ ├── IOidcOfflineCredentialStore.cs
│ │ ├── IOidcSession.cs
│ │ ├── LoopbackCodeReceiver.cs
│ │ ├── OidcClientBase.cs
│ │ ├── OidcClientRegistration.cs
│ │ ├── OidcSessionBase.cs
│ │ └── Scopes.cs
│ ├── Client
│ │ ├── ApiClientBase.cs
│ │ ├── ApiKey.cs
│ │ ├── ClientServiceMtlsExtensions.cs
│ │ ├── HttpClientHandlerExtensions.cs
│ │ ├── IClient.cs
│ │ ├── PscAndMtlsAwareHttpClientFactory.cs
│ │ ├── RequestExtensions.cs
│ │ ├── RestClient.cs
│ │ ├── ServiceEndpoint.cs
│ │ ├── ServiceEndpointDirections.cs
│ │ ├── ServiceRoute.cs
│ │ └── UserAgent.cs
│ ├── ClientException.cs
│ ├── Compute
│ │ ├── AddressResolver.cs
│ │ ├── ComputeEngineClient.cs
│ │ ├── IComputeEngineClient.cs
│ │ ├── InstanceExtensions.cs
│ │ ├── InternalDnsName.cs
│ │ ├── MetadataExtensions.cs
│ │ ├── OsLoginClient.cs
│ │ ├── Permissions.cs
│ │ ├── ResourceMetadataExtensions.cs
│ │ ├── SerialPortReader.cs
│ │ └── WindowsCredentialGenerator.cs
│ ├── Crm
│ │ └── ResourceManagerClient.cs
│ ├── Diagnostics
│ │ ├── IHelpTopic.cs
│ │ └── TraceSourceLogger.cs
│ ├── GoogleApiExceptionExtensions.cs
│ ├── Google.Solutions.Apis.csproj
│ ├── HelpTopics.cs
│ ├── Locator
│ │ ├── AccessLevelLocator.cs
│ │ ├── GlobalResourceLocator.cs
│ │ ├── GlobalResourceLocator.tt
│ │ ├── LicenseLocatorExtensions.cs
│ │ ├── ProjectLocator.cs
│ │ ├── ResourceLocator.cs
│ │ ├── ZonalResourceLocator.cs
│ │ ├── ZonalResourceLocator.tt
│ │ └── ZoneLocator.cs
│ ├── Logging
│ │ └── LoggingClient.cs
│ └── Properties
│ └── AssemblyInfo.cs
├── Google.Solutions.Apis.Test
│ ├── Analytics
│ │ ├── TestMeasurementClient.cs
│ │ ├── TestMeasurementService.cs
│ │ └── TestMeasurementSession.cs
│ ├── app.config
│ ├── Auth
│ │ ├── Gaia
│ │ │ ├── TestGaiaCodeFlow.cs
│ │ │ ├── TestGaiaOidcClient.cs
│ │ │ ├── TestGaiaOidcSession.cs
│ │ │ └── TestUnverifiedGaiaJsonWebToken.cs
│ │ ├── Iam
│ │ │ ├── TestAuthPortalCodeFlow.cs
│ │ │ ├── TestStsService.cs
│ │ │ ├── TestWorkforcePoolClient.cs
│ │ │ ├── TestWorkforcePoolIdentity.cs
│ │ │ ├── TestWorkforcePoolProviderLocator.cs
│ │ │ └── TestWorkforcePoolSession.cs
│ │ ├── TestLoopbackCodeReceiver.cs
│ │ ├── TestOidcClientBase.cs
│ │ └── TestOidcClientRegistration.cs
│ ├── Client
│ │ ├── TestApiClientBase.cs
│ │ ├── TestPscAndMtlsAwareHttpClientFactory.cs
│ │ ├── TestRequestExtensions.cs
│ │ ├── TestRestClient.cs
│ │ ├── TestServiceEndpoint.cs
│ │ ├── TestServiceEndpointDirections.cs
│ │ ├── TestServiceRoute.cs
│ │ └── TestUserAgent.cs
│ ├── Compute
│ │ ├── TestAddressResolver.cs
│ │ ├── TestComputeEngineClient.cs
│ │ ├── TestInstanceExtensions.cs
│ │ ├── TestInternalDnsName.cs
│ │ ├── TestMetadataExtensions.cs
│ │ ├── TestOsLoginClient.cs
│ │ ├── TestResourceMetadataExtensions.cs
│ │ └── TestWindowsCredentialGenerator.cs
│ ├── Crm
│ │ └── TestResourceManagerClient.cs
│ ├── Google.Solutions.Apis.Test.csproj
│ ├── Locator
│ │ ├── TestAccessLevelLocator.cs
│ │ ├── TestDiskTypeLocator.cs
│ │ ├── TestImageLocator.cs
│ │ ├── TestInstanceLocator.cs
│ │ ├── TestLicenseLocator.cs
│ │ ├── TestMachineTypeLocator.cs
│ │ ├── TestNodeTypeLocator.cs
│ │ ├── TestProjectLocator.cs
│ │ └── TestZoneLocator.cs
│ ├── Logging
│ │ └── TestLoggingClient.cs
│ └── TestGoogleApiExceptionExtensions.cs
├── Google.Solutions.Common
│ ├── app.config
│ ├── CommonTraceSource.cs
│ ├── Diagnostics
│ │ ├── ClrVersion.cs
│ │ ├── DumpObjectExtensions.cs
│ │ ├── SkipCodeCoverageAttribute.cs
│ │ ├── TraceCallScope.cs
│ │ └── TraceSourceExtensions.cs
│ ├── Format
│ │ ├── Base64UrlEncoding.cs
│ │ ├── BigEndian.cs
│ │ └── BsdChecksum.cs
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.Common.csproj
│ ├── Interop
│ │ ├── ComReference.cs
│ │ ├── CoTaskMemAllocSafeHandle.cs
│ │ ├── GlobalAllocSafeHandle.cs
│ │ ├── Hresult.cs
│ │ ├── LocalAllocSafeHandle.cs
│ │ ├── SafeHandleExtensions.cs
│ │ ├── SafeWin32Handle.cs
│ │ └── WindowsFilename.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Runtime
│ │ ├── DisposableBase.cs
│ │ ├── DisposableContainer.cs
│ │ ├── Disposable.cs
│ │ ├── DisposableExtensions.cs
│ │ └── ReferenceCountedDisposableBase.cs
│ ├── Security
│ │ └── SecureStringExtensions.cs
│ ├── Text
│ │ ├── IAsyncReader.cs
│ │ ├── StringExtensions.cs
│ │ └── TypographicQuotes.cs
│ ├── Threading
│ │ ├── AsyncLock.cs
│ │ ├── CancellationTokenExtensions.cs
│ │ ├── RundownProtection.cs
│ │ ├── SingleThreadSynchronizationContext.cs
│ │ ├── StaTask.cs
│ │ ├── SynchronizationContextExtensions.cs
│ │ ├── SynchronousInvokeExtensions.cs
│ │ └── WaitHandleExtensions.cs
│ └── Util
│ ├── DateTimeOffsetExtensions.cs
│ ├── EnumExtensions.cs
│ ├── ExceptionExtensions.cs
│ ├── Invariant.cs
│ ├── LinqExtensions.cs
│ ├── Parallel.cs
│ ├── Precondition.cs
│ └── TypeExtensions.cs
├── Google.Solutions.Common.Test
│ ├── app.config
│ ├── CommonFixtureBase.cs
│ ├── Diagnostics
│ │ ├── TestClrVersion.cs
│ │ ├── TestDumpObjectExtensions.cs
│ │ └── TestTraceSourceExtensions.cs
│ ├── Format
│ │ ├── TestBase64UrlEncoding.cs
│ │ ├── TestBigEndian.cs
│ │ └── TestBsdChecksum.cs
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.Common.Test.csproj
│ ├── Interop
│ │ ├── TestCoTaskMemAllocSafeHandle.cs
│ │ ├── TestGlobalAllocSafeHandle.cs
│ │ ├── TestHresultExtensions.cs
│ │ ├── TestLocalAllocSafeHandle.cs
│ │ ├── TestSafeHandleExtensions.cs
│ │ └── TestWindowsFilename.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Runtime
│ │ ├── TestDisposableBase.cs
│ │ ├── TestDisposableContainer.cs
│ │ ├── TestDisposable.cs
│ │ └── TestReferenceCountedDisposableBase.cs
│ ├── Security
│ │ └── TestSecureStringExtensions.cs
│ ├── TestInvariant.cs
│ ├── Text
│ │ ├── TestStringExtensions.cs
│ │ └── TestTypographicQuotes.cs
│ ├── Threading
│ │ ├── TestCancellationTokenExtensions.cs
│ │ ├── TestRundownProtection.cs
│ │ ├── TestSingleThreadSynchronizationContext.cs
│ │ └── TestSynchronousInvokeExtensions.cs
│ └── Util
│ ├── TestDateTimeOffsetExtensions.cs
│ ├── TestEnumExtensions.cs
│ ├── TestExceptionExtensions.cs
│ ├── TestLinqExtensions.cs
│ ├── TestPrecondition.cs
│ └── TestTypeExtensions.cs
├── Google.Solutions.Iap
│ ├── Google.Solutions.Iap.csproj
│ ├── IapClient.cs
│ ├── IapInstanceTarget.cs
│ ├── IapListener.cs
│ ├── IapTraceSource.cs
│ ├── Net
│ │ ├── INetworkStream.cs
│ │ ├── NetworkStatistics.cs
│ │ ├── NetworkStream.cs
│ │ ├── OneTimeUseStream.cs
│ │ ├── PortFinder.cs
│ │ ├── SingleReaderSingleWriterStream.cs
│ │ ├── SocketStream.cs
│ │ ├── SystemPatch.cs
│ │ └── WebSocketStream.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── Protocol
│ ├── SshRelayConstants.cs
│ ├── SshRelayFormat.cs
│ ├── SshRelaySession.cs
│ └── SshRelayStream.cs
├── Google.Solutions.IapDesktop
│ ├── App.config
│ ├── app.manifest
│ ├── diagnose.cmd
│ ├── diagnose.ps1
│ ├── Google.Solutions.IapDesktop.csproj
│ ├── icon.ico
│ ├── OAuthClient.cs.default
│ ├── ProcessMitigations.cs
│ ├── ProductIcon.ico
│ ├── Program.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── launchSettings.json
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Resources
│ │ ├── About.bmp
│ │ ├── About.pdn
│ │ ├── About.png
│ │ ├── AccentGradient_450.pdn
│ │ ├── AccentGradient_450.png
│ │ ├── AddCredentials_16.png
│ │ ├── AddProject_16.png
│ │ ├── AddUser_16.png
│ │ ├── Authenticated_100.gif
│ │ ├── Authenticated_48.gif
│ │ ├── AuthorizedKey_16.png
│ │ ├── BackgroundColor_16.png
│ │ ├── Cancel_16.pdn
│ │ ├── Cancel_16_white.png
│ │ ├── Cancel_16x.png
│ │ ├── Chrome_16_color.png
│ │ ├── Chrome_16.png
│ │ ├── Cloud_16.png
│ │ ├── Cloud_16_white.png
│ │ ├── Cloud_48_white.png
│ │ ├── Computer_16.png
│ │ ├── Computer_48.pdn
│ │ ├── Computer_48.png
│ │ ├── ComputerBlue_16.ico
│ │ ├── ComputerBlue_16.png
│ │ ├── ComputerDetails_16.png
│ │ ├── ComputerStopped_16.png
│ │ ├── ComputerTerminal_16.png
│ │ ├── ComputerTerminal_32.png
│ │ ├── ComputerTerminalBlue_16.png
│ │ ├── Connect_16.png
│ │ ├── ConsentScreen.pdn
│ │ ├── ConsentScreen.png
│ │ ├── Console_16.ico
│ │ ├── Console_16.pdn
│ │ ├── Console_16.png
│ │ ├── ConsoleBlue_16.ico
│ │ ├── ConsoleBlue_16.png
│ │ ├── ConsoleLogsViewer_16.png
│ │ ├── Copy_16x.png
│ │ ├── Delete_16.png
│ │ ├── DeleteKey_16.png
│ │ ├── DeviceEnrolled_48.png
│ │ ├── DeviceUnknown_48.png
│ │ ├── DeviceWhite_16.png
│ │ ├── Disconnect_16.png
│ │ ├── Disconnected_32.pdn
│ │ ├── Disconnected_32.png
│ │ ├── Documentation_16.png
│ │ ├── DownloadFile_16.png
│ │ ├── Duplicate.png
│ │ ├── EndpointVerificationWhite_16.png
│ │ ├── Error_gray_16.png
│ │ ├── EventLog_16.png
│ │ ├── Filter_16.png
│ │ ├── Fullscreen_16.png
│ │ ├── GoogleSignIn_24.png
│ │ ├── icon.pdn
│ │ ├── Info_16.png
│ │ ├── Info2_16.png
│ │ ├── Info_gray_16.png
│ │ ├── Log_16.png
│ │ ├── logo.ico
│ │ ├── LogoWatermark_180.png
│ │ ├── LogTail_16.png
│ │ ├── Package_16.png
│ │ ├── PackageInspect_16.png
│ │ ├── PackageUpdate_16.pdn
│ │ ├── PackageUpdate_16.png
│ │ ├── PackageWarn_16.png
│ │ ├── Project_16.png
│ │ ├── ProjectExplorer_16.png
│ │ ├── Project.pdn
│ │ ├── Refresh_16.png
│ │ ├── Report_16.png
│ │ ├── Report_32.png
│ │ ├── Report_48.png
│ │ ├── Report.ico
│ │ ├── Search_16.png
│ │ ├── Settings_16.png
│ │ ├── Spinner.gif
│ │ ├── Splash.pdn
│ │ ├── Splash.png
│ │ ├── Success_gray_16.png
│ │ ├── TextColor_16.png
│ │ ├── Thinking-100.gif
│ │ ├── Thinking-130.gif
│ │ ├── Thinking-150.gif
│ │ ├── Tunnel_16.pdn
│ │ ├── Tunnel_16.png
│ │ ├── UploadFile_16.png
│ │ ├── UserWhite_16.pdn
│ │ ├── UserWhite_16.png
│ │ ├── Warning_gray_16.png
│ │ ├── Zone_16.png
│ │ └── Zone.pdn
│ └── Windows
│ ├── ErrorDialog.cs
│ ├── ErrorDialog.Designer.cs
│ ├── ErrorDialog.resx
│ ├── MainForm.cs
│ ├── MainForm.Designer.cs
│ ├── MainForm.resx
│ ├── MainFormViewModel.cs
│ └── ToolStripExtensions.cs
├── Google.Solutions.IapDesktop.Application
│ ├── app.config
│ ├── ApplicationEventSource.cs
│ ├── ApplicationTraceSource.cs
│ ├── Client
│ │ ├── BugReportClient.cs
│ │ ├── CloudConsoleClient.cs
│ │ ├── ExternalRestClient.cs
│ │ ├── GithubClient.cs
│ │ ├── HelpClient.cs
│ │ └── HttpProxyAdapter.cs
│ ├── Data
│ │ └── IapRdpUrl.cs
│ ├── Diagnostics
│ │ ├── BugReport.cs
│ │ ├── HelpTopics.cs
│ │ ├── IReleaseFeed.cs
│ │ └── TelemetryCollector.cs
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.IapDesktop.Application.csproj
│ ├── Host
│ │ ├── CommandLineOptions.cs
│ │ ├── Install.cs
│ │ ├── OSCapabilities.cs
│ │ └── SingletonApplicationBase.cs
│ ├── Profile
│ │ ├── Auth
│ │ │ ├── Authorization.cs
│ │ │ └── DeviceEnrollment.cs
│ │ ├── Settings
│ │ │ ├── AccessSettingsRepository.cs
│ │ │ ├── ApplicationSettingsRepository.cs
│ │ │ ├── AuthSettingsRepository.cs
│ │ │ ├── IProjectRepository.cs
│ │ │ ├── IRepository.cs
│ │ │ ├── ISetting.cs
│ │ │ ├── ISettingsCollection.cs
│ │ │ ├── PersistentSettingsCollection.cs
│ │ │ ├── ProjectRepository.cs
│ │ │ ├── Registry
│ │ │ │ ├── PolicyEnabledRegistryRepository.cs
│ │ │ │ ├── RegistryRepositoryBase.cs
│ │ │ │ └── RegistrySetting.cs
│ │ │ ├── SettingBase.cs
│ │ │ ├── ThemeSettingsRepository.cs
│ │ │ └── ToolWindowStateRepository.cs
│ │ ├── UpdatePolicy.cs
│ │ ├── UpdatePolicyFactory.cs
│ │ └── UserProfile.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── AccentGradient_450.png
│ │ ├── AddProject_16.png
│ │ ├── Computer_16.png
│ │ ├── ComputerTerminal_161.png
│ │ ├── ComputerTerminal_16.png
│ │ ├── Copy_16x.png
│ │ ├── GoogleSignIn_24.png
│ │ ├── logo.ico
│ │ ├── LogoWatermark_180.png
│ │ ├── Password_16.png
│ │ ├── Project_16.png
│ │ ├── Refresh_16.png
│ │ ├── Search_16.png
│ │ └── Settings_16.png
│ ├── Theme
│ │ ├── Resources
│ │ │ ├── Dark.vstheme
│ │ │ ├── Dark.vstheme.gz
│ │ │ ├── Light.vstheme
│ │ │ ├── Light.vstheme.gz
│ │ │ └── README.md
│ │ ├── ThemeService.cs
│ │ ├── VSTheme.cs
│ │ ├── VSThemeExtensions.cs
│ │ └── VSThemeRuleSet.cs
│ ├── ToolWindows
│ │ ├── ProjectExplorer
│ │ │ ├── ProjectExplorer.cs
│ │ │ ├── ProjectExplorerSettings.cs
│ │ │ ├── ProjectExplorerTrackingToolWindow.cs
│ │ │ ├── ProjectExplorerView.cs
│ │ │ ├── ProjectExplorerView.Designer.cs
│ │ │ ├── ProjectExplorerViewModel.cs
│ │ │ └── ProjectExplorerView.resx
│ │ ├── Properties
│ │ │ ├── IPropertiesInspectorViewModel.cs
│ │ │ ├── PropertiesInspectorViewBase.cs
│ │ │ ├── PropertiesInspectorViewBase.Designer.cs
│ │ │ ├── PropertiesInspectorViewBase.resx
│ │ │ ├── PropertiesViewBase.cs
│ │ │ ├── PropertiesViewBase.Designer.cs
│ │ │ ├── PropertiesViewBase.resx
│ │ │ ├── PropertiesViewModelBase.cs
│ │ │ └── SettingsCollectionTypeDescriptor.cs
│ │ └── Update
│ │ ├── CheckForUpdateCommand.cs
│ │ ├── ReleaseNotesView.cs
│ │ ├── ReleaseNotesView.Designer.cs
│ │ ├── ReleaseNotesViewModel.cs
│ │ └── ReleaseNotesView.resx
│ └── Windows
│ ├── Auth
│ │ ├── AccessInfoFlyoutView.cs
│ │ ├── AccessInfoFlyoutView.Designer.cs
│ │ ├── AccessInfoFlyoutView.resx
│ │ ├── AccessInfoViewModel.cs
│ │ ├── AuthorizeOptionsView.cs
│ │ ├── AuthorizeOptionsView.Designer.cs
│ │ ├── AuthorizeOptionsViewModel.cs
│ │ ├── AuthorizeOptionsView.resx
│ │ ├── AuthorizeView.cs
│ │ ├── AuthorizeView.Designer.cs
│ │ ├── AuthorizeViewModel.cs
│ │ ├── AuthorizeView.resx
│ │ ├── NewProfileView.cs
│ │ ├── NewProfileView.Designer.cs
│ │ ├── NewProfileViewModel.cs
│ │ ├── NewProfileView.resx
│ │ ├── OAuthScopeNotGrantedView.cs
│ │ ├── OAuthScopeNotGrantedView.Designer.cs
│ │ ├── OAuthScopeNotGrantedViewModel.cs
│ │ └── OAuthScopeNotGrantedView.resx
│ ├── Dialog
│ │ ├── ConfirmationDialog.cs
│ │ ├── CredentialDialog.cs
│ │ ├── ExceptionDialog.cs
│ │ ├── InputDialog.cs
│ │ ├── LegacyTaskDialog.cs
│ │ ├── NotifyDialog.cs
│ │ ├── OperationProgressDialog.cs
│ │ ├── SystemInputDialog.cs
│ │ └── UnsafeNativeMethods.cs
│ ├── DocumentWindow.cs
│ ├── FlyoutWindow.cs
│ ├── FlyoutWindow.Designer.cs
│ ├── FlyoutWindow.resx
│ ├── IMainWindow.cs
│ ├── JobService.cs
│ ├── MenuCommandAttribute.cs
│ ├── MenuCommandBase.cs
│ ├── Menu.cs
│ ├── Options
│ │ ├── AccessOptionsSheet.cs
│ │ ├── AccessOptionsSheet.Designer.cs
│ │ ├── AccessOptionsSheet.resx
│ │ ├── AccessOptionsViewModel.cs
│ │ ├── AppearanceOptionsSheet.cs
│ │ ├── AppearanceOptionsSheet.Designer.cs
│ │ ├── AppearanceOptionsSheet.resx
│ │ ├── AppearanceOptionsViewModel.cs
│ │ ├── GeneralOptionsSheet.cs
│ │ ├── GeneralOptionsSheet.Designer.cs
│ │ ├── GeneralOptionsSheet.resx
│ │ ├── GeneralOptionsViewModel.cs
│ │ ├── InvalidOptionsException.cs
│ │ ├── NetworkOptionsSheet.cs
│ │ ├── NetworkOptionsSheet.Designer.cs
│ │ ├── NetworkOptionsSheet.resx
│ │ ├── NetworkOptionsViewModel.cs
│ │ ├── OptionsDialog.cs
│ │ ├── OptionsViewModelBase.cs
│ │ ├── ScreenOptionsSheet.cs
│ │ ├── ScreenOptionsSheet.Designer.cs
│ │ ├── ScreenOptionsSheet.resx
│ │ └── ScreenOptionsViewModel.cs
│ ├── ProjectPicker
│ │ ├── IProjectPickerModel.cs
│ │ ├── ProjectList.cs
│ │ ├── ProjectPickerDialog.cs
│ │ ├── ProjectPickerView.cs
│ │ ├── ProjectPickerView.Designer.cs
│ │ ├── ProjectPickerViewModel.cs
│ │ └── ProjectPickerView.resx
│ ├── SessionBroker.cs
│ ├── ToolWindowHost.cs
│ ├── ToolWindowViewBase.cs
│ ├── ToolWindowViewBase.Designer.cs
│ ├── ToolWindowViewBase.resx
│ ├── UrlCommands.cs
│ ├── ViewBindingContext.cs
│ ├── WaitDialog.cs
│ ├── WaitDialog.Designer.cs
│ └── WaitDialog.resx
├── Google.Solutions.IapDesktop.Application.Test
│ ├── app.config
│ ├── Client
│ │ ├── TestCloudConsoleClient.cs
│ │ ├── TestGithubClient.cs
│ │ └── TestHttpProxyAdapter.cs
│ ├── Data
│ │ └── TestIapRdpUrl.cs
│ ├── Diagnostics
│ │ ├── TestBugReport.cs
│ │ └── TestTelemetryListener.cs
│ ├── Google.Solutions.IapDesktop.Application.Test.csproj
│ ├── Host
│ │ ├── TestCommandLineOptions.cs
│ │ ├── TestInstall.cs
│ │ └── TestSingletonApplicationBase.cs
│ ├── Profile
│ │ ├── Auth
│ │ │ ├── TestAuthorization.cs
│ │ │ └── TestDeviceEnrollment.cs
│ │ ├── Settings
│ │ │ ├── Registry
│ │ │ │ ├── TestRegistryBoolSetting.cs
│ │ │ │ ├── TestRegistryDwordSetting.cs
│ │ │ │ ├── TestRegistryEnumFlagsSetting.cs
│ │ │ │ ├── TestRegistryEnumSetting.cs
│ │ │ │ ├── TestRegistryQwordSetting.cs
│ │ │ │ ├── TestRegistrySecureStringSetting.cs
│ │ │ │ └── TestRegistryStringSetting.cs
│ │ │ ├── TestAccessSettingsRepository.cs
│ │ │ ├── TestApplicationSettingsRepository.cs
│ │ │ ├── TestAuthSettingsRepository.cs
│ │ │ ├── TestProjectRepository.cs
│ │ │ ├── TestThemeSettingsRepository.cs
│ │ │ └── TestToolWindowStateRepository.cs
│ │ ├── TestUpdatePolicy.cs
│ │ ├── TestUpdatePolicyFactory.cs
│ │ └── TestUserProfile.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RequiresProxyAutoconfigAttribute.cs
│ ├── TestNtlmProxy.cs
│ ├── Theme
│ │ └── TestVSTheme.cs
│ ├── ToolWindows
│ │ ├── ProjectExplorer
│ │ │ ├── TestProjectExplorerSettings.cs
│ │ │ └── TestProjectExplorerViewModel.cs
│ │ ├── Properties
│ │ │ └── TestPropertiesInspectorWindow.cs
│ │ └── Update
│ │ ├── TestCheckForUpdateCommand.cs
│ │ └── TestReleaseNotesViewModel.cs
│ └── Windows
│ ├── Auth
│ │ ├── TestAccessInfoViewModel.cs
│ │ ├── TestAuthorizeOptionsViewModel.cs
│ │ ├── TestAuthorizeViewModel.cs
│ │ └── TestNewProfileViewModel.cs
│ ├── Dialog
│ │ ├── TestCredentialDialog.cs
│ │ └── TestInputDialog.cs
│ ├── Options
│ │ ├── TestAccessOptionsViewModel.cs
│ │ ├── TestAppearanceOptionsViewModel.cs
│ │ ├── TestGeneralOptionsViewModel.cs
│ │ ├── TestNetworkOptionsViewModel.cs
│ │ ├── TestOptionsViewModelBase.cs
│ │ └── TestScreenOptionsViewModel.cs
│ ├── ProjectPicker
│ │ ├── TestProjectPickerDialog.cs
│ │ └── TestProjectPickerViewModel.cs
│ ├── TestJobService.cs
│ ├── TestMenuCommandAttribute.cs
│ ├── TestSessionBroker.cs
│ ├── TestToolWindow.cs
│ └── TestWaitDialog.cs
├── Google.Solutions.IapDesktop.Core
│ ├── ClientModel
│ │ ├── Protocol
│ │ │ ├── AppProtocolClient.cs
│ │ │ ├── AppProtocolConfigurationFile.cs
│ │ │ ├── AppProtocolContext.cs
│ │ │ ├── AppProtocol.cs
│ │ │ ├── AppProtocolParameters.cs
│ │ │ ├── IProtocolContext.cs
│ │ │ ├── IProtocol.cs
│ │ │ ├── IProtocolTarget.cs
│ │ │ ├── ProtocolRegistry.cs
│ │ │ ├── ProtocolTargetException.cs
│ │ │ └── ProtocolTargetLocator.cs
│ │ ├── Traits
│ │ │ ├── ITrait.cs
│ │ │ ├── TraitDetector.cs
│ │ │ ├── TypeTrait.cs
│ │ │ └── TypeTrait.tt
│ │ └── Transport
│ │ ├── DirectTransportFactory.cs
│ │ ├── IapTransportFactory.cs
│ │ ├── IapTunnel.cs
│ │ ├── ITransport.cs
│ │ ├── ITransportPolicy.cs
│ │ ├── Policies
│ │ │ ├── AllowAllPolicy.cs
│ │ │ ├── ChildProcessPolicy.cs
│ │ │ ├── CurrentProcessPolicy.cs
│ │ │ ├── CurrentWtsSessionPolicy.cs
│ │ │ └── ProcessPolicyBase.cs
│ │ └── TransportFailedException.cs
│ ├── CoreTraceSource.cs
│ ├── Google.Solutions.IapDesktop.Core.csproj
│ ├── HelpTopics.cs
│ ├── ObjectModel
│ │ ├── EventQueue.cs
│ │ ├── IServiceCategoryProvider.cs
│ │ ├── ServiceAttribute.cs
│ │ ├── Service.cs
│ │ └── ServiceRegistry.cs
│ ├── ProjectModel
│ │ ├── IProjectModelNode.cs
│ │ ├── IProjectRepository.cs
│ │ ├── Nodes
│ │ │ ├── CloudNode.cs
│ │ │ ├── InstanceNode.cs
│ │ │ ├── ProjectNode.cs
│ │ │ └── ZoneNode.cs
│ │ ├── OperatingSystems.cs
│ │ ├── ProjectWorkspace.cs
│ │ └── ProjectWorkspaceEvents.cs
│ └── Properties
│ └── AssemblyInfo.cs
├── Google.Solutions.IapDesktop.Core.Test
│ ├── app.config
│ ├── ClientModel
│ │ ├── Protocol
│ │ │ ├── TestAppProtocolClient.cs
│ │ │ ├── TestAppProtocolConfigurationFile.cs
│ │ │ ├── TestAppProtocolConfigurationFileSection.cs
│ │ │ ├── TestAppProtocolContext.cs
│ │ │ ├── TestAppProtocol.cs
│ │ │ ├── TestProtocolRegistry.cs
│ │ │ └── TestProtocolTargetLocator.cs
│ │ ├── Traits
│ │ │ ├── TestInstanceTrait.cs
│ │ │ ├── TestLinuxTrait.cs
│ │ │ ├── TestTraitDetector.cs
│ │ │ └── TestWindowsTrait.cs
│ │ └── Transport
│ │ ├── Policies
│ │ │ ├── TestAllowAllPolicy.cs
│ │ │ ├── TestChildProcessPolicy.cs
│ │ │ ├── TestCurrentProcessPolicy.cs
│ │ │ └── TestCurrentWtsSessionPolicy.cs
│ │ ├── TestDirectTransportFactory.cs
│ │ ├── TestIapTransportFactory.cs
│ │ ├── TestIapTunnel.cs
│ │ ├── TestIapTunnelFactory.cs
│ │ └── TestIapTunnelProfile.cs
│ ├── Google.Solutions.IapDesktop.Core.Test.csproj
│ ├── ObjectModel
│ │ ├── TestEventQueue.cs
│ │ ├── TestServiceAttribute.cs
│ │ └── TestServiceRegistry.cs
│ ├── ProjectModel
│ │ ├── TestInstanceNode.cs
│ │ └── TestProjectModelService.cs
│ └── Properties
│ └── AssemblyInfo.cs
├── Google.Solutions.IapDesktop.Extensions.Diagnostics
│ ├── DebugMenu.cs
│ ├── Dialog
│ │ ├── DialogCommands.cs
│ │ └── ForceCheckForUpdateCommand.cs
│ ├── ErrorHandling
│ │ └── ThrowExceptionCommands.cs
│ ├── Google.Solutions.IapDesktop.Extensions.Diagnostics.csproj
│ ├── Options
│ │ ├── DebugOptionsSheet.cs
│ │ ├── DebugOptionsSheet.Designer.cs
│ │ ├── DebugOptionsSheet.resx
│ │ └── DebugOptionsSheetViewModel.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── ToolWindows
│ ├── AutoCloseView.cs
│ ├── AutoCloseView.Designer.cs
│ ├── AutoCloseViewModel.cs
│ ├── AutoCloseView.resx
│ ├── DebugCommonControlsView.cs
│ ├── DebugCommonControlsView.Designer.cs
│ ├── DebugCommonControlsViewModel.cs
│ ├── DebugCommonControlsView.resx
│ ├── DebugDockingView.cs
│ ├── DebugDockingView.Designer.cs
│ ├── DebugDockingViewModel.cs
│ ├── DebugDockingView.resx
│ ├── DebugJobServiceView.cs
│ ├── DebugJobServiceView.Designer.cs
│ ├── DebugJobServiceViewModel.cs
│ ├── DebugJobServiceView.resx
│ ├── DebugProjectExplorerTrackingView.cs
│ ├── DebugProjectExplorerTrackingView.Designer.cs
│ ├── DebugProjectExplorerTrackingViewModel.cs
│ ├── DebugProjectExplorerTrackingView.resx
│ ├── DebugServiceRegistryView.cs
│ ├── DebugServiceRegistryView.Designer.cs
│ ├── DebugServiceRegistryViewModel.cs
│ ├── DebugServiceRegistryView.resx
│ ├── DebugThemeView.cs
│ ├── DebugThemeView.Designer.cs
│ ├── DebugThemeViewModel.cs
│ ├── DebugThemeView.resx
│ └── ToolWindowCommands.cs
├── Google.Solutions.IapDesktop.Extensions.Explorer
│ ├── Google.Solutions.IapDesktop.Extensions.Explorer.csproj
│ ├── HelpMenu.cs
│ ├── ProfileMenu.cs
│ ├── Resources
│ │ ├── AccentGradient_450.png
│ │ ├── AddProject_16.png
│ │ └── Documentation_16.png
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ └── ToolWindows
│ ├── Install
│ │ ├── AboutCommand.cs
│ │ ├── About.md
│ │ ├── AboutView.cs
│ │ ├── AboutView.Designer.cs
│ │ ├── AboutViewModel.cs
│ │ ├── AboutView.resx
│ │ ├── OpenHelpCommand.cs
│ │ ├── ReleaseNotesCommand.cs
│ │ └── ReportBugCommand.cs
│ └── Profile
│ ├── AddProjectCommand.cs
│ ├── ExitCommand.cs
│ ├── ProfileCommandBase.cs
│ └── SignOutCommand.cs
├── Google.Solutions.IapDesktop.Extensions.Explorer.Test
│ ├── Google.Solutions.IapDesktop.Extensions.Explorer.Test.csproj
│ └── ToolWindows
│ ├── Install
│ │ └── TestAboutViewModel.cs
│ └── Profile
│ └── TestSignOutCommand.cs
├── Google.Solutions.IapDesktop.Extensions.Management
│ ├── Auditing
│ │ ├── AuditLogClient.cs
│ │ ├── Events
│ │ │ ├── Access
│ │ │ │ ├── AuthorizeUserTunnelEvent.cs
│ │ │ │ ├── ModifiedMetadata.cs
│ │ │ │ ├── OsLoginCheckPolicyEvent.cs
│ │ │ │ ├── OsLoginContinueSessionEvent.cs
│ │ │ │ ├── OsLoginEventBase.cs
│ │ │ │ ├── OsLoginStartSessionEvent.cs
│ │ │ │ ├── SetCommonInstanceMetadataEvent.cs
│ │ │ │ └── SetMetadataEvent.cs
│ │ │ ├── EventBase.cs
│ │ │ ├── EventFactory.cs
│ │ │ ├── IEventProcessor.cs
│ │ │ ├── InstanceEventBase.cs
│ │ │ ├── InstanceOperationEventBase.cs
│ │ │ ├── Lifecycle
│ │ │ │ ├── DeleteInstanceEvent.cs
│ │ │ │ ├── InsertInstanceEvent.cs
│ │ │ │ ├── ResetInstanceEvent.cs
│ │ │ │ ├── ResumeInstanceEvent.cs
│ │ │ │ ├── StartInstanceEvent.cs
│ │ │ │ ├── StartWithEncryptionKeyEvent.cs
│ │ │ │ ├── StopInstanceEvent.cs
│ │ │ │ └── SuspendInstanceEvent.cs
│ │ │ ├── ProjectEventBase.cs
│ │ │ ├── ProjectOperationEventBase.cs
│ │ │ ├── System
│ │ │ │ ├── AutomaticRestartEvent.cs
│ │ │ │ ├── GenericSystemEvent.cs
│ │ │ │ ├── GuestTerminateEvent.cs
│ │ │ │ ├── HostErrorEvent.cs
│ │ │ │ ├── InstanceManagerHaltForRestartEvent.cs
│ │ │ │ ├── InstancePreemptedEvent.cs
│ │ │ │ ├── InstanceResetEvent.cs
│ │ │ │ ├── MigrateOnHostMaintenanceEvent.cs
│ │ │ │ ├── NotifyInstanceLocationEvent.cs
│ │ │ │ ├── RecreateInstanceEvent.cs
│ │ │ │ ├── SystemEventBase.cs
│ │ │ │ └── TerminateOnHostMaintenanceEvent.cs
│ │ │ └── UnknownEvent.cs
│ │ └── Logs
│ │ ├── AuditLogRecord.cs
│ │ ├── ListLogEntriesParser.cs
│ │ └── LogRecord.cs
│ ├── Google.Solutions.IapDesktop.Extensions.Management.csproj
│ ├── GuestOs
│ │ ├── ActiveDirectory
│ │ │ ├── DomainJoinService.cs
│ │ │ ├── DomainJoinService.StartupScript.ps1
│ │ │ ├── NetworkCredentialExtensions.cs
│ │ │ └── StartupScriptOperation.cs
│ │ └── Inventory
│ │ ├── GuestOsInfo.cs
│ │ ├── GuestOsInventory.cs
│ │ ├── GuestPackages.cs
│ │ ├── IPackage.cs
│ │ ├── Package.cs
│ │ ├── QfePackage.cs
│ │ ├── WuaPackage.cs
│ │ └── ZypperPatch.cs
│ ├── InitializeManagementExtension.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── ComputerDetails_16.png
│ │ ├── EventLog_16.png
│ │ ├── Log_16.png
│ │ ├── LogTail_16.png
│ │ ├── Package_16.png
│ │ ├── PackageInspect_16.png
│ │ ├── PackageLight_16.png
│ │ ├── PackageUpdate_16.png
│ │ ├── PackageWarn_16.png
│ │ ├── Pause_16.png
│ │ ├── Refresh_16.png
│ │ ├── Report_16.png
│ │ ├── Report_32.png
│ │ ├── Reset_16.png
│ │ ├── Start_16.png
│ │ └── Stop_16.png
│ └── ToolWindows
│ ├── ActiveDirectory
│ │ ├── JoinView.cs
│ │ ├── JoinView.Designer.cs
│ │ ├── JoinViewModel.cs
│ │ └── JoinView.resx
│ ├── EventLog
│ │ ├── EventLogCommands.cs
│ │ ├── EventLogModel.cs
│ │ ├── EventLogView.cs
│ │ ├── EventLogView.Designer.cs
│ │ ├── EventLogViewModel.cs
│ │ └── EventLogView.resx
│ ├── InstanceControlCommands.cs
│ ├── InstanceProperties
│ │ ├── InstancePropertiesInspectorCommands.cs
│ │ ├── InstancePropertiesInspectorModel.cs
│ │ ├── InstancePropertiesInspectorView.cs
│ │ └── InstancePropertiesInspectorViewModel.cs
│ ├── PackageInventory
│ │ ├── AvailablePackageInventoryView.cs
│ │ ├── InstalledPackageInventoryView.cs
│ │ ├── PackageInventoryCommands.cs
│ │ ├── PackageInventoryModel.cs
│ │ ├── PackageInventoryType.cs
│ │ ├── PackageInventoryViewBase.cs
│ │ ├── PackageInventoryViewBase.Designer.cs
│ │ ├── PackageInventoryViewBase.resx
│ │ ├── PackageInventoryViewModel.cs
│ │ └── PackageList.cs
│ └── SerialOutput
│ ├── SerialOutputCommands.cs
│ ├── SerialOutputModel.cs
│ ├── SerialOutputViewBase.cs
│ ├── SerialOutputViewBase.Designer.cs
│ ├── SerialOutputViewBase.resx
│ ├── SerialOutputViewModel.cs
│ ├── SerialOutputWindowComX.cs
│ └── XtermReader.cs
├── Google.Solutions.IapDesktop.Extensions.Management.Test
│ ├── app.config
│ ├── Auditing
│ │ ├── Events
│ │ │ ├── Access
│ │ │ │ ├── TestAuthorizeUserTunnelEvent.cs
│ │ │ │ ├── TestOsLoginCheckPolicyEvent.cs
│ │ │ │ ├── TestOsLoginContinueSessionEvent.cs
│ │ │ │ ├── TestOsLoginStartSessionEvent.cs
│ │ │ │ ├── TestSetCommonInstanceMetadataEvent.cs
│ │ │ │ └── TestSetMetadataEvent.cs
│ │ │ ├── Lifecycle
│ │ │ │ ├── TestBetaInsertInstanceEvent.cs
│ │ │ │ ├── TestBetaStopInstanceEvent.cs
│ │ │ │ ├── TestDeleteInstanceEvent.cs
│ │ │ │ ├── TestInsertInstanceEvent.cs
│ │ │ │ ├── TestResetInstanceEvent.cs
│ │ │ │ ├── TestResumeInstanceEvent.cs
│ │ │ │ ├── TestStartInstanceEvent.cs
│ │ │ │ ├── TestStartWithEncryptionKeyEvent.cs
│ │ │ │ └── TestSuspendInstanceEvent.cs
│ │ │ ├── System
│ │ │ │ ├── TestAutomaticRestartEvent.cs
│ │ │ │ ├── TestGenericSystemEvent.cs
│ │ │ │ ├── TestGuestTerminateEvent.cs
│ │ │ │ ├── TestHostErrorEvent.cs
│ │ │ │ ├── TestInstancePreemptedEvent.cs
│ │ │ │ ├── TestMigrateOnHostMaintenanceEvent.cs
│ │ │ │ ├── TestNotifyInstanceLocationEvent.cs
│ │ │ │ ├── TestRecreateInstanceEvent.cs
│ │ │ │ └── TestTerminateOnHostMaintenanceEvent.cs
│ │ │ ├── TestEventFactory.cs
│ │ │ └── TestUnknownEvent.cs
│ │ ├── Logs
│ │ │ ├── TestAuditLogRecord.cs
│ │ │ ├── TestListLogEntriesParser.cs
│ │ │ └── TestLogRecord.cs
│ │ └── TestAuditLogClient.cs
│ ├── Google.Solutions.IapDesktop.Extensions.Management.Test.csproj
│ ├── GuestOs
│ │ ├── ActiveDirectory
│ │ │ ├── TestDomainJoinService.cs
│ │ │ ├── TestDomainJoinServiceStartupScript.cs
│ │ │ └── TestStartupScriptOperation.cs
│ │ └── Inventory
│ │ ├── TestCentOsGuestOsInfo.cs
│ │ ├── TestGuestOsInventory.cs
│ │ ├── TestPackage.cs
│ │ ├── TestQfePackage.cs
│ │ ├── TestWindowsGuestOsInfo.cs
│ │ ├── TestWuaPackage.cs
│ │ ├── TestWuaPackageType.cs
│ │ └── TestZypperPatch.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── ToolWindows
│ ├── ActiveDirectory
│ │ └── TestJoinViewModel.cs
│ ├── EventLog
│ │ ├── TestEventLogCommands.cs
│ │ └── TestEventLogViewModel.cs
│ ├── InstanceProperties
│ │ ├── TestInstancePropertiesInspectorCommands.cs
│ │ ├── TestInstancePropertiesInspectorModel.cs
│ │ └── TestInstancePropertiesInspectorViewModel.cs
│ ├── PackageInventory
│ │ ├── TestPackageInventoryCommands.cs
│ │ ├── TestPackageInventoryModel.cs
│ │ └── TestPackageInventoryViewModel.cs
│ ├── SerialOutput
│ │ ├── TestSerialOutputCommands.cs
│ │ ├── TestSerialOutputModel.cs
│ │ ├── TestSerialOutputViewModel.cs
│ │ └── TestXtermReader.cs
│ └── TestInstanceControlCommands.cs
├── Google.Solutions.IapDesktop.Extensions.Session
│ ├── Controls
│ │ ├── KeyUtil.cs
│ │ ├── RdpClient.ConnectionProperties.cs
│ │ ├── RdpClient.cs
│ │ ├── RdpExceptions.cs
│ │ ├── TerminalFont.cs
│ │ ├── VirtualTerminal.cs
│ │ ├── VirtualTerminal.designer.cs
│ │ ├── VirtualTerminalKeyHandler.cs
│ │ ├── VirtualTerminalKeyTranslation.cs
│ │ └── VirtualTerminal.resx
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.IapDesktop.Extensions.Session.csproj
│ ├── HelpTopics.cs
│ ├── InitializeSessionExtension.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── DefaultAppProtocols
│ │ │ ├── chrome-8080.iapc
│ │ │ ├── chrome-80.iapc
│ │ │ ├── mysql-8.0.iapc
│ │ │ ├── mysql-8.1.iapc
│ │ │ ├── mysql-tunnel.iapc
│ │ │ ├── postgres-tunnel.iapc
│ │ │ └── sqlserver-tunnel.iapc
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Protocol
│ │ ├── App
│ │ │ ├── AppProtocolContextFactory.cs
│ │ │ ├── SsmsClient.cs
│ │ │ └── Ssms.cs
│ │ ├── IapRdpUrlExtensions.cs
│ │ ├── ISessionContext.cs
│ │ ├── ProjectExplorerNodeExtensions.cs
│ │ ├── Rdp
│ │ │ ├── RdpContext.cs
│ │ │ ├── RdpCredentialCallback.cs
│ │ │ ├── RdpCredential.cs
│ │ │ ├── RdpParameters.cs
│ │ │ ├── RdpProtocol.cs
│ │ │ └── WindowsUser.cs
│ │ ├── SessionContextBase.cs
│ │ ├── SessionContextFactory.cs
│ │ ├── SessionException.cs
│ │ ├── SessionParametersBase.cs
│ │ └── Ssh
│ │ ├── CngKeyName.cs
│ │ ├── EphemeralKeySigners.cs
│ │ ├── IAuthorizedPublicKey.cs
│ │ ├── LinuxUser.cs
│ │ ├── MetadataAuthorizedPublicKey.cs
│ │ ├── MetadataAuthorizedPublicKeyProcessor.cs
│ │ ├── MetadataAuthorizedPublicKeySet.cs
│ │ ├── OsLoginCertificateSigner.cs
│ │ ├── OsLoginProfile.cs
│ │ ├── PlatformCredential.cs
│ │ ├── PlatformCredentialFactory.cs
│ │ ├── SshContext.cs
│ │ ├── SshParameters.cs
│ │ └── SshProtocol.cs
│ ├── Resources
│ │ ├── AddCredentials_16.png
│ │ ├── AuthorizedKey_16.png
│ │ ├── BackgroundColor_16.png
│ │ ├── Connect_16.png
│ │ ├── Copy_16x.png
│ │ ├── Delete_16.png
│ │ ├── DeleteKey_16.png
│ │ ├── Disconnect_16.png
│ │ ├── Disconnected_32.png
│ │ ├── DownloadFile_16.png
│ │ ├── Duplicate.png
│ │ ├── Fullscreen_16.png
│ │ ├── Key_36.png
│ │ ├── Password_16.png
│ │ ├── Refresh_16.png
│ │ ├── Search_16.png
│ │ ├── Settings_16.png
│ │ ├── Spinner.gif
│ │ ├── SshKey_16.png
│ │ ├── SshKey_32.png
│ │ ├── TextColor_16.png
│ │ ├── Tunnel_16.png
│ │ └── UploadFile_16.png
│ ├── Settings
│ │ ├── ConnectionSettings.cs
│ │ ├── ConnectionSettingsRepository.cs
│ │ ├── ConnectionSettingsService.cs
│ │ ├── SshSettings.cs
│ │ └── TerminalSettings.cs
│ └── ToolWindows
│ ├── App
│ │ ├── AppCommands.cs
│ │ ├── ConnectAppProtocolCommandBase.cs
│ │ ├── ConnectAppProtocolWithClientCommand.cs
│ │ ├── ConnectAppProtocolWithoutClientCommand.cs
│ │ └── ForwardLocalPortCommand.cs
│ ├── ConnectionSettings
│ │ ├── ConnectionSettingsCommands.cs
│ │ ├── ConnectionSettingsView.cs
│ │ └── ConnectionSettingsViewModel.cs
│ ├── Credentials
│ │ ├── ConfigureCredentialsWorkflow.cs
│ │ ├── CreateCredentialsWorkflow.cs
│ │ ├── CredentialCommands.cs
│ │ ├── NewCredentialsDialog.cs
│ │ ├── NewCredentialsView.cs
│ │ ├── NewCredentialsView.Designer.cs
│ │ ├── NewCredentialsViewModel.cs
│ │ ├── NewCredentialsView.resx
│ │ ├── SelectCredentialsDialog.cs
│ │ ├── ShowCredentialsView.cs
│ │ ├── ShowCredentialsView.Designer.cs
│ │ └── ShowCredentialsView.resx
│ ├── Diagnostics
│ │ └── DiagnosticsCommands.cs
│ ├── Download
│ │ ├── DownloadFileDialog.cs
│ │ ├── DownloadFileView.cs
│ │ ├── DownloadFileView.Designer.cs
│ │ ├── DownloadFileViewModel.cs
│ │ └── DownloadFileView.resx
│ ├── Options
│ │ ├── SshOptionsSheet.cs
│ │ ├── SshOptionsSheet.Designer.cs
│ │ ├── SshOptionsSheet.resx
│ │ ├── SshOptionsViewModel.cs
│ │ ├── TerminalOptionsSheet.cs
│ │ ├── TerminalOptionsSheet.Designer.cs
│ │ ├── TerminalOptionsSheet.resx
│ │ └── TerminalOptionsViewModel.cs
│ ├── Rdp
│ │ ├── IRdpSession.cs
│ │ ├── RdpClientExtensions.cs
│ │ ├── RdpView.cs
│ │ ├── RdpView.Designer.cs
│ │ ├── RdpViewModel.cs
│ │ └── RdpView.resx
│ ├── Session
│ │ ├── ConnectCommands.cs
│ │ ├── ConnectInstanceCommandBase.cs
│ │ ├── ConnectInstanceCommand.cs
│ │ ├── ConnectRdpUrlCommand.cs
│ │ ├── SessionCommands.cs
│ │ └── SessionFactory.cs
│ ├── SessionViewBase.cs
│ ├── Ssh
│ │ ├── ISshTerminalSession.cs
│ │ ├── SftpFileSystem.cs
│ │ ├── SshTerminalView.cs
│ │ ├── SshTerminalViewModel.cs
│ │ ├── TerminalPaneBase.cs
│ │ ├── TerminalPaneBase.Designer.cs
│ │ ├── TerminalPaneBase.resx
│ │ └── TerminalViewModelBase.cs
│ ├── SshKeys
│ │ ├── AuthorizedPublicKeysCommands.cs
│ │ ├── AuthorizedPublicKeysList.cs
│ │ ├── AuthorizedPublicKeysModel.cs
│ │ ├── AuthorizedPublicKeysView.cs
│ │ ├── AuthorizedPublicKeysView.Designer.cs
│ │ ├── AuthorizedPublicKeysViewModel.cs
│ │ └── AuthorizedPublicKeysView.resx
│ └── Tunnels
│ ├── TunnelsViewCommands.cs
│ ├── TunnelsView.cs
│ ├── TunnelsView.designer.cs
│ ├── TunnelsViewModel.cs
│ └── TunnelsView.resx
├── Google.Solutions.IapDesktop.Extensions.Session.Test
│ ├── app.config
│ ├── Controls
│ │ ├── RdpDiagnosticsWindow.cs
│ │ ├── RdpDiagnosticsWindow.Designer.cs
│ │ ├── RdpDiagnosticsWindow.resx
│ │ ├── TestRdpClient.cs
│ │ ├── TestRdpClientWithGroupPolicies.cs
│ │ ├── TestTerminalFont.cs
│ │ ├── TestVirtualTerminal.cs
│ │ └── TestVirtualTerminalKeyHandler.cs
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.IapDesktop.Extensions.Session.Test.csproj
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Protocol
│ │ ├── App
│ │ │ ├── TestAppProtocolContextFactory.cs
│ │ │ ├── TestSsmsClient.cs
│ │ │ └── TestSsms.cs
│ │ ├── Rdp
│ │ │ ├── TestRdpContext.cs
│ │ │ ├── TestRdpCredentialCallback.cs
│ │ │ ├── TestRdpCredential.cs
│ │ │ ├── TestRdpParameters.cs
│ │ │ ├── TestRdpProtocol.cs
│ │ │ └── TestSessionContextFactoryForRdp.cs
│ │ ├── Ssh
│ │ │ ├── TestCngKeyName.cs
│ │ │ ├── TestEphemeralKeySigners.cs
│ │ │ ├── TestInstanceMetadataAuthorizedPublicKeyProcessor.cs
│ │ │ ├── TestLinuxUser.cs
│ │ │ ├── TestMetadataAuthorizedPublicKey.cs
│ │ │ ├── TestMetadataAuthorizedPublicKeyProcessor.cs
│ │ │ ├── TestMetadataAuthorizedPublicKeySet.cs
│ │ │ ├── TestOsLoginCertificateSigner.cs
│ │ │ ├── TestOsLoginProfile.cs
│ │ │ ├── TestPlatformCredentialAuthentication.cs
│ │ │ ├── TestPlatformCredential.cs
│ │ │ ├── TestPlatformCredentialFactory.cs
│ │ │ ├── TestProjectMetadataAuthorizedPublicKeyProcessor.cs
│ │ │ ├── TestSessionContextFactoryForSsh.cs
│ │ │ ├── TestSshContext.cs
│ │ │ ├── TestSshParameters.cs
│ │ │ └── TestSshProtocol.cs
│ │ └── TestIapRdpUrlExtensions.cs
│ ├── RequiresRdpAttribute.cs
│ ├── Settings
│ │ ├── TestConnectionSettingsRepository.cs
│ │ ├── TestConnectionSettingsService.cs
│ │ ├── TestIapRdpUrlConnectionSettings.cs
│ │ ├── TestSshSettingsRepository.cs
│ │ └── TestTerminalSettingsRepository.cs
│ ├── TestInitializeSessionExtension.cs
│ └── ToolWindows
│ ├── App
│ │ ├── TestConnectAppProtocolWithClientCommand.cs
│ │ ├── TestConnectAppProtocolWithoutClientCommand.cs
│ │ └── TestForwardLocalPortCommand.cs
│ ├── ConnectionSettings
│ │ ├── TestConnectionSettingsCommands.cs
│ │ └── TestConnectionSettingsViewModel.cs
│ ├── Credentials
│ │ ├── TestCreateCredentialsWorkflow.cs
│ │ ├── TestGenerateCredentialsViewModel.cs
│ │ └── TestSelectCredentialsWorkflow.cs
│ ├── Download
│ │ ├── TestDownloadFileDialog.cs
│ │ └── TestDownloadFileViewModel.cs
│ ├── Options
│ │ ├── TestSshOptionsViewModel.cs
│ │ └── TestTerminalOptionsViewModel.cs
│ ├── Rdp
│ │ ├── IapTransport.cs
│ │ ├── TestRdpView.cs
│ │ └── TestWindowsUser.cs
│ ├── Session
│ │ ├── TestConnectCommands.cs
│ │ ├── TestConnectInstanceComand.cs
│ │ ├── TestConnectRdpUrlCommand.cs
│ │ └── TestSessionCommands.cs
│ ├── Ssh
│ │ ├── TestSftpFileSystem.cs
│ │ ├── TestSshTerminalPaneViewModel.cs
│ │ └── TestSshTerminalView.cs
│ ├── SshKeys
│ │ ├── TestAuthorizedPublicKeysCommands.cs
│ │ ├── TestAuthorizedPublicKeysModel.cs
│ │ └── TestAuthorizedPublicKeysViewModel.cs
│ ├── TestSessionPaneBase.cs
│ └── Tunnels
│ ├── TestTunnelsViewCommands.cs
│ └── TestTunnelsViewModel.cs
├── Google.Solutions.IapDesktop.props
├── Google.Solutions.IapDesktop.sln
├── Google.Solutions.Iap.Test
│ ├── app.config
│ ├── Google.Solutions.Iap.Test.csproj
│ ├── IapFixtureBase.cs
│ ├── InitializeScripts.cs
│ ├── Net
│ │ ├── TestPortFinder.cs
│ │ ├── TestSystemPatch.cs
│ │ └── TestWebSocketStream.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Protocol
│ │ ├── Mocks.cs
│ │ ├── TestEchoOverIapBase.cs
│ │ ├── TestEchoOverIapDirectTunnel.cs
│ │ ├── TestEchoOverIapIndirectTunnel.cs
│ │ ├── TestHttpOverIapDirectTunnel.cs
│ │ ├── TestHttpOverIapIndirectTunnel.cs
│ │ ├── TestHttpOverIapTunnelBase.cs
│ │ ├── TestSshRelayFormat.cs
│ │ ├── TestSshRelayStream.Probing.cs
│ │ ├── TestSshRelayStream.Reading.cs
│ │ ├── TestSshRelayStream.SocketHandling.cs
│ │ └── TestSshRelayStream.Writing.cs
│ ├── Setup.cs
│ ├── TestIapClient.cs
│ ├── TestIapListener.cs
│ └── Util
│ ├── WebSocketServer.cs
│ └── WebSocketServerExtensions.cs
├── Google.Solutions.Mvvm
│ ├── Binding
│ │ ├── BindingContext.cs
│ │ ├── BindingException.cs
│ │ ├── BindingExtensions.cs
│ │ ├── Commands
│ │ │ ├── CommandBase.cs
│ │ │ ├── CommandBindingExtensions.cs
│ │ │ ├── CommandBindingExtensions.Generated.cs
│ │ │ ├── CommandBindingExtensions.Generated.tt
│ │ │ ├── CommandContainer.cs
│ │ │ ├── ContextCommand.cs
│ │ │ ├── ContextCommandGroup.cs
│ │ │ ├── ContextSource.cs
│ │ │ ├── DelegatingContextCommandBase.cs
│ │ │ ├── ICommandBase.cs
│ │ │ ├── ICommand.cs
│ │ │ ├── IContextCommand.cs
│ │ │ └── ObservableCommand.cs
│ │ ├── FilteredObservableCollection.cs
│ │ ├── ObservableFunc.cs
│ │ ├── ObservableProperty.Builder.cs
│ │ ├── ObservableProperty.cs
│ │ ├── PropertiesSheetView.cs
│ │ ├── PropertiesView.cs
│ │ ├── PropertiesView.Designer.cs
│ │ ├── PropertiesViewModel.cs
│ │ ├── PropertiesView.resx
│ │ ├── RangeObservableCollection.cs
│ │ ├── ToolStripMenuBindingExtensions.cs
│ │ ├── View.cs
│ │ └── ViewModelBase.cs
│ ├── Cache
│ │ ├── LeastRecentlyUsedCache.cs
│ │ └── ModelCachingViewModel.cs
│ ├── Controls
│ │ ├── ActiveStatusStrip.cs
│ │ ├── BindableComboBox.cs
│ │ ├── BindableListView.cs
│ │ ├── BindableTreeView.cs
│ │ ├── ClipboardUtil.cs
│ │ ├── CompositeForm.cs
│ │ ├── ControlExtensions.cs
│ │ ├── DeferredCallback.cs
│ │ ├── DropDownButton.cs
│ │ ├── EventArgs.cs
│ │ ├── ExceptionEventArgs.cs
│ │ ├── FileBrowser.cs
│ │ ├── FileBrowser.Designer.cs
│ │ ├── FileBrowser.Interfaces.cs
│ │ ├── FileBrowser.resx
│ │ ├── HeaderLabel.cs
│ │ ├── HtmlClipboardFormat.cs
│ │ ├── ListViewExtensions.cs
│ │ ├── MarkdownViewer.cs
│ │ ├── MarkdownViewer.Designer.cs
│ │ ├── MarkdownViewer.resx
│ │ ├── NotificationBarPanel.cs
│ │ ├── ProgressBar.cs
│ │ ├── PropertyGridExtensions.cs
│ │ ├── RichTextBox50.cs
│ │ ├── RichTextBoxExtensions.cs
│ │ ├── ScreenPicker.cs
│ │ ├── ScreenPicker.Designer.cs
│ │ ├── ScreenPicker.resx
│ │ ├── SearchableList.cs
│ │ ├── SearchableList.Designer.cs
│ │ ├── SearchableList.resx
│ │ ├── TaskDialog.cs
│ │ ├── TaskDialogParameters.cs
│ │ ├── TextBoxExtensions.cs
│ │ └── VerticalTabControl.cs
│ ├── Diagnostics
│ │ ├── DebugMessageThrottle.cs
│ │ └── MessageTraceRecorder.cs
│ ├── Drawing
│ │ ├── BadgeIcon.cs
│ │ ├── ColorExtensions.cs
│ │ ├── FontExtensions.cs
│ │ ├── HslColor.cs
│ │ └── IconInverter.cs
│ ├── Format
│ │ ├── ByteSizeFormatter.cs
│ │ ├── MarkdownDocument.cs
│ │ └── RtfWriter.cs
│ ├── Google.Solutions.Mvvm.csproj
│ ├── Interop
│ │ ├── SubclassCallback.cs
│ │ ├── WindowMessage.cs
│ │ └── WindowStyles.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── Resources
│ │ ├── Copy_16x.png
│ │ └── Search_16.png
│ ├── Shell
│ │ ├── FileTypeCache.cs
│ │ ├── FileType.cs
│ │ ├── KnownFolders.cs
│ │ ├── StockIcons.cs
│ │ └── TaskBarList.cs
│ └── Theme
│ ├── CommonControlRuleSet.cs
│ ├── ControlTheme.cs
│ ├── GdiScaling.cs
│ ├── GdiScalingRuleset.cs
│ ├── IControlTheme.cs
│ ├── SystemTheme.cs
│ ├── ToolStripItemTheme.cs
│ ├── WindowsRuleSet.cs
│ └── WindowsSystemDialogRuleset.cs
├── Google.Solutions.Mvvm.Test
│ ├── app.config
│ ├── app.manifest
│ ├── Binding
│ │ ├── Commands
│ │ │ ├── TestCommandBindingExtensions.cs
│ │ │ ├── TestCommandContainer.cs
│ │ │ ├── TestContextCommand.cs
│ │ │ └── TestContextCommandGroup.cs
│ │ ├── TestBindingExtensions.cs
│ │ ├── TestFilteredObservableCollection.cs
│ │ ├── TestObservableFunc.cs
│ │ ├── TestObservableProperty.cs
│ │ ├── TestPropertiesView.cs
│ │ ├── TestPropertiesViewModel.cs
│ │ ├── TestRangeObservableCollection.cs
│ │ ├── TestThreadSafeObservableProperty.cs
│ │ ├── TestToolStripMenuBindingExtensions.cs
│ │ └── TestView.cs
│ ├── Cache
│ │ ├── TestLeastRecentlyUsedCache.cs
│ │ └── TestModelCachingViewModelBase.cs
│ ├── Controls
│ │ ├── TestActiveStatusStrip.cs
│ │ ├── TestBindableComboBox.cs
│ │ ├── TestBindableListView.cs
│ │ ├── TestBindableTreeView.cs
│ │ ├── TestDeferredCallback.cs
│ │ ├── TestFileBrowser.cs
│ │ ├── TestFileBrowserUi.cs
│ │ ├── TestHtmlClipboardFormat.cs
│ │ ├── TestListViewExtensions.cs
│ │ ├── TestMarkdownViewer.cs
│ │ ├── TestMarkdownViewer.Designer.cs
│ │ ├── TestMarkdownViewer.resx
│ │ ├── TestNotificationBarPanel.cs
│ │ ├── TestNotificationBarPanel.Designer.cs
│ │ ├── TestNotificationBarPanel.resx
│ │ ├── TestProgressBar.cs
│ │ ├── TestScreenPicker.cs
│ │ ├── TestTaskDialog.cs
│ │ └── TestVerticalTabControl.cs
│ ├── Diagnostics
│ │ ├── TestMessageTrace.cs
│ │ └── TestMessageTraceRecorder.cs
│ ├── Drawing
│ │ ├── TestBadgeIcon.cs
│ │ ├── TestColorExtensions.cs
│ │ ├── TestFontExtensions.cs
│ │ ├── TestHslColor.cs
│ │ ├── TestIconInverter.cs
│ │ ├── TestIconInverter.Designer.cs
│ │ └── TestIconInverter.resx
│ ├── Format
│ │ ├── TestByteSizeFormatter.cs
│ │ ├── TestMarkdownDocument.cs
│ │ └── TestRtfWriter.cs
│ ├── Google.Solutions.Mvvm.Test.csproj
│ ├── Interop
│ │ └── TestSubclassCallback.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Shell
│ │ ├── TestFileTypeCache.cs
│ │ ├── TestFileType.cs
│ │ ├── TestKnownFolders.cs
│ │ └── TestStockIcons.cs
│ └── Theme
│ ├── TestCommonControlTheme.cs
│ ├── TestControlTheme.cs
│ └── TestToolStripItemTheme.cs
├── Google.Solutions.Platform
│ ├── Dispatch
│ │ ├── DispatchException.cs
│ │ ├── IWin32ProcessSet.cs
│ │ ├── Win32ChildProcessFactory.cs
│ │ ├── Win32Job.cs
│ │ ├── Win32Process.cs
│ │ ├── Win32ProcessFactory.cs
│ │ └── WtsSession.cs
│ ├── Google.Solutions.Platform.csproj
│ ├── Net
│ │ ├── Browser.cs
│ │ ├── BrowserProtocolRegistry.cs
│ │ ├── ChromeAutoSelectCertificateForUrlsPolicy.cs
│ │ ├── ChromeCertificateSelector.cs
│ │ ├── ChromePolicyUrlPattern.cs
│ │ ├── IChromeAutoSelectCertificateForUrlsPolicy.cs
│ │ ├── NetworkCredentialExtensions.cs
│ │ └── TcpTable.cs
│ ├── PlatformTraceSource.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Security
│ │ ├── Cryptography
│ │ │ ├── CertificateStore.cs
│ │ │ ├── KeyStore.cs
│ │ │ └── KeyType.cs
│ │ └── Quarantine.cs
│ └── UserEnvironment.cs
├── Google.Solutions.Platform.Test
│ ├── app.config
│ ├── CngAssert.cs
│ ├── Dispatch
│ │ ├── TestWin32ChildProcessFactory.cs
│ │ ├── TestWin32Job.cs
│ │ ├── TestWin32Process.cs
│ │ ├── TestWin32ProcessFactory.cs
│ │ └── TestWtsSession.cs
│ ├── Google.Solutions.Platform.Test.csproj
│ ├── Net
│ │ ├── TestBrowser.cs
│ │ ├── TestBrowserProtocolRegistry.cs
│ │ ├── TestChromeAutoSelectCertificateForUrlsPolicy.cs
│ │ ├── TestChromeCertificateSelector.cs
│ │ ├── TestChromePolicyUrlPattern.cs
│ │ ├── TestNetworkCredentialExtensions.cs
│ │ └── TestTcpTable.cs
│ ├── Security
│ │ ├── Cryptography
│ │ │ ├── TestCertificateStore.cs
│ │ │ ├── TestKeyStore.cs
│ │ │ └── TestKeyType.cs
│ │ └── TestQuarantine.cs
│ └── TestUserEnvironment.cs
├── Google.Solutions.Ssh
│ ├── Cryptography
│ │ ├── AsymmetricKeySigner.cs
│ │ ├── AuthenticationChallenge.cs
│ │ ├── EcdsaPublicKey.cs
│ │ ├── EcdsaSignature.cs
│ │ ├── EcdsaSigner.cs
│ │ ├── ECPointEncoding.cs
│ │ ├── PublicKey.cs
│ │ ├── RsaPublicKey.cs
│ │ ├── RsaSigner.cs
│ │ └── SshKeyType.cs
│ ├── Format
│ │ ├── MessageCodes.cs
│ │ ├── SshFormatException.cs
│ │ ├── SshReader.cs
│ │ └── SshWriter.cs
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.Ssh.csproj
│ ├── ISshCredential.cs
│ ├── ITextTerminal.cs
│ ├── Native
│ │ ├── AuthenticationMetods.cs
│ │ ├── EnvironmentVariable.cs
│ │ ├── FilePermissions.cs
│ │ ├── HandleTable.cs
│ │ ├── HostKeyType.cs
│ │ ├── NativeMethods.cs
│ │ ├── SshAuthenticatedSession.cs
│ │ ├── SshChannelBase.cs
│ │ ├── SshConnectedSession.cs
│ │ ├── SshException.cs
│ │ ├── SshSessionChannel.cs
│ │ ├── SshSession.cs
│ │ ├── SshSftpChannel.cs
│ │ └── SshSftpFileChannel.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── RemoteConnection.cs
│ ├── RemoteFileSystemChannel.cs
│ ├── RemoteShellChannel.cs
│ ├── SshEventSource.cs
│ ├── SshException.cs
│ ├── SshTraceSource.cs
│ ├── SshWorkerThread.cs
│ ├── StaticPasswordCredential.cs
│ ├── StreamingDecoder.cs
│ └── TerminalSize.cs
├── Google.Solutions.Ssh.Test
│ ├── app.config
│ ├── Cryptography
│ │ ├── AsymmentricKeyExtensions.cs
│ │ ├── SampleKeys.cs
│ │ ├── TestAuthenticationChallenge.cs
│ │ ├── TestEcdsaPublicKey.cs
│ │ ├── TestEcdsaSigner.cs
│ │ ├── TestECPointEncoding.cs
│ │ ├── TestPublicKey.cs
│ │ ├── TestRsaPublicKey.cs
│ │ └── TestRsaSigner.cs
│ ├── Format
│ │ ├── TestSshReader.cs
│ │ └── TestSshWriter.cs
│ ├── GlobalSuppressions.cs
│ ├── Google.Solutions.Ssh.Test.csproj
│ ├── Mocks.cs
│ ├── Native
│ │ ├── InitializeScripts.cs
│ │ ├── TestEnvironmentVariable.cs
│ │ ├── TestFilePermissions.cs
│ │ ├── TestSshAuthenticatedSession.cs
│ │ ├── TestSshConnectedSession.cs
│ │ ├── TestSshSession.cs
│ │ ├── TestSshSftpChannel.cs
│ │ ├── TestSshSftpFileChannel.cs
│ │ └── TestSshShellChannel.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SshAssert.cs
│ ├── SshFixtureBase.cs
│ ├── TestRemoteConnection.cs
│ ├── TestRemoteFileSystemChannel.cs
│ ├── TestRemoteShellChannel.cs
│ ├── TestStaticPasswordCredential.cs
│ └── TestStreamingDecoder.cs
├── Google.Solutions.Testing.Apis
│ ├── app.config
│ ├── Assert.cs
│ ├── Auth
│ │ ├── Enrollment.cs
│ │ ├── TemporaryAuthorization.cs
│ │ ├── TemporaryCredential.cs
│ │ ├── TemporaryPrincipal.cs
│ │ ├── TemporaryServiceAccount.cs
│ │ ├── TemporarySession.cs
│ │ └── TemporaryWorkforcePoolSubject.cs
│ ├── Cryptography
│ │ └── CertificateUtil.cs
│ ├── EquatableFixtureBase.cs
│ ├── FixtureBase.cs
│ ├── Google.Solutions.Testing.Apis.csproj
│ ├── Integration
│ │ ├── CloudIntegrationTest.cs
│ │ ├── CredentialAttribute.cs
│ │ ├── InstanceAttribute.cs
│ │ ├── InstanceFactory.cs
│ │ ├── PredefinedRole.cs
│ │ ├── RequiresInteractionAttribute.cs
│ │ ├── ResourceTask.cs
│ │ └── TestProject.cs
│ ├── Mock
│ │ └── ServiceProviderMocks.cs
│ ├── Net
│ │ ├── InprocHttpProxy.cs
│ │ └── NetTracing.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Threading
│ │ └── ThreadpoolInvoker.cs
│ └── WindowsFormsTestAttribute.cs
├── Google.Solutions.Testing.Application
│ ├── app.config
│ ├── ApplicationFixtureBase.cs
│ ├── Google.Solutions.Testing.Application.csproj
│ ├── Mocks
│ │ └── SynchronousJobService.cs
│ ├── ObjectModel
│ │ └── ServiceRegistryExtensions.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── Views
│ ├── ControlExtensions.cs
│ ├── TestMainForm.cs
│ ├── TestMainForm.Designer.cs
│ ├── TestMainForm.resx
│ └── WindowTestFixtureBase.cs
├── installer
│ ├── Background.bmp
│ ├── Background.pdn
│ ├── ConfigReadme.txt
│ ├── Header.bmp
│ ├── icon.ico
│ ├── License.rtf
│ ├── LogsReadme.txt
│ ├── policies
│ │ ├── IapDesktop.adml
│ │ └── IapDesktop.admx
│ ├── Product.wxl
│ ├── Product.wxs
│ └── Sample-mstsc.iapc
├── kokoro
│ ├── continuous.cfg
│ ├── nunit-to-sponge.xsl
│ └── presubmit.cfg
├── makefile
├── README.md
├── results.xml
└── scripts
├── check-copyright-headers.ps1
├── clean.ps1
├── create-zip.ps1
├── credential-callback-server.ps1
├── gzip.ps1
├── README.md
└── strip-bom.ps1
298 directories, 1602 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论