{"id":112,"date":"2011-09-21T11:12:58","date_gmt":"2011-09-21T18:12:58","guid":{"rendered":"http:\/\/constantinekrick.com\/?p=112"},"modified":"2011-09-21T11:12:58","modified_gmt":"2011-09-21T18:12:58","slug":"ncomputing-x550-x350-integration-with-vmware-view","status":"publish","type":"post","link":"http:\/\/constantinekrick.com\/?p=112","title":{"rendered":"Ncomputing X550 \/ X350 integration with VmWare View"},"content":{"rendered":"<p><strong>Situation :<\/strong>\u00a0To have\u00a0Ncomputing\u00a0stations connect to a VmWare View virtual desktop.<\/p>\n<p><strong>Technical Challenges\u00a0:<\/strong>\u00a0The major challenge is that the VmWare\u00a0View software will only allow one instance of the program to run. There are ways around this to support the Ncomputing\u00a0terminals, but they are not supported by either Ncomputing\u00a0or VmWare.<\/p>\n<p><strong>Solution :<\/strong><\/p>\n<p><strong>Part 1 :\u00a0Understanding\u00a0how to\u00a0have\u00a0VmWare\u00a0View run multiple instances<\/strong><\/p>\n<p>From a command prompt, run &#8220;wswc.exe -standalone&#8221;<\/p>\n<p><a href=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-standalone.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-medium wp-image-113\" title=\"Vmware View Stand Alone from Command Prompt\" src=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-standalone-300x66.jpg\" alt=\"\" width=\"300\" height=\"66\" srcset=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-standalone-300x66.jpg 300w, http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-standalone.jpg 677w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<p>The &#8220;-standalone&#8221; command is unsupported; however, it is the only way to have the ncomputing\u00a0terminals run VmWare\u00a0View.\u00a0 The &#8220;-standalone&#8221; command does not appear when running &#8220;-?&#8221; for all of the commands.<\/p>\n<p><a href=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-questionmark.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-medium wp-image-116\" title=\"VmWare View List of Commands\" src=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-questionmark-300x215.jpg\" alt=\"\" width=\"300\" height=\"215\" srcset=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-questionmark-300x215.jpg 300w, http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/cmd-vmwareview-questionmark.jpg 677w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>A complete list of commands is posted below :<\/p>\n<p><strong>-desktopName<\/strong> <strong>XXX<\/strong>\u00a0Desktop to autostart<br \/>\n<strong>-domainName<\/strong> <strong>XXX<\/strong> Domain for server login<br \/>\n<strong>-file XXX<\/strong> File with additional command line parameters<br \/>\n<strong>-languageId XXX<\/strong>\u00a0LCID of language to use (if available),\u00a0 e.g. 0\u00d7409 for English<br \/>\n<strong>-nonInteractive<\/strong> Suppress error message boxes for fully scripted startup<br \/>\n<strong>-password XXX<\/strong> Password for server login<br \/>\n<strong>-smartCardPIN XXX<\/strong> PIN for smart card login<br \/>\n<strong>-desktopProtocol XXX<\/strong> Attempt to use the specified desktop display protocol<br \/>\n<strong>-desktopLayout XXX<\/strong>\u00a0Specify desktop screen size (e.g. fullscreen, multimonitor, windowLarge, or windowSmall)<br \/>\n<strong>-serverURL XXX<\/strong> URL for the View Connection Server<br \/>\n<strong>-logInAsCurrentUser XXX<\/strong> Log in as current user (true or false)<br \/>\n<strong>-userName XXX<\/strong> User name for server login<br \/>\n<strong>-unattended<\/strong>\u00a0Start in unattended mode. Connects to the entitled desktop without user interaction<br \/>\n<strong>-connectUSBOnStartup XXX<\/strong> Connect all USB devices to a desktop when it is launched (true or false)<br \/>\n<strong>-connectUSBOnInsert XXX<\/strong> Connect a USB device to the foreground desktop when the device is plugged in (true or false)<br \/>\n<strong>-printEnvironmentInfo<\/strong> Print information about the system<br \/>\n<strong>-rollback<\/strong>\u00a0Rolls back a check out (need -desktopName)<br \/>\n<strong>-confirmRollback<\/strong> Confirm rollback operation in non-interactive mode<br \/>\n<strong>-?<\/strong> Show this help<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0Part 2 : Creating a Splash\u00a0Screen inside the Ncomputing\u00a0terminal to allow only VmWare View to run. <\/strong><\/p>\n<p>If users are connecting to a virtual desktop, it advantageous\u00a0to lock down the terminal so\u00a0nothing can be done on the Ncomputing\u00a0host by the user. \u00a0To do this, I wrote a simple program in C# to lock down the screen. It presents the user with only one button to allow VmWare\u00a0View to run.\u00a0Also, in order to use this the Ncomputing\u00a0Vspace\u00a0needs to be configured to have the custom-built\u00a0program run on start-up.\u00a0 Below is a screen shot of what a user would see on their Ncomputing Terminal after they have logged in.<\/p>\n<p><a href=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/Splash-Screen-Ncomputing-VmWare-View.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignleft size-medium wp-image-120\" title=\"Splash Screen on Ncomputing to start VmWare View\" src=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/Splash-Screen-Ncomputing-VmWare-View-300x189.jpg\" alt=\"\" width=\"300\" height=\"189\" srcset=\"http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/Splash-Screen-Ncomputing-VmWare-View-300x189.jpg 300w, http:\/\/constantinekrick.com\/wp-content\/uploads\/2011\/09\/Splash-Screen-Ncomputing-VmWare-View.jpg 563w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Breaking down the program (in code)\u00a0:<\/strong><\/p>\n<p>A number of security measures must be taken to prevent users from closing the program. The following code snippet prevents users from right clicking on a title bar and closing it. This also prevents the user from closing it by pressing ALT+F4<\/p>\n<pre lang=\"csharp\">\u00a0       protected override CreateParams\u00a0CreateParams\r\n        {\r\n            get\r\n            {\r\n                const int CS_NOCLOSE = 0x200;\r\n\r\n                CreateParams\u00a0cp = base.CreateParams;\r\n                cp.ClassStyle |= CS_NOCLOSE;\r\n\r\n                return cp;\r\n            }\r\n        }<\/pre>\n<p>Also, the screen will need to be maximized to prevent the user from accessing other programs.<\/p>\n<pre lang=\"csharp\">public Form1()\r\n        {\r\n            InitializeComponent();\r\n\r\n            this.Bounds = Screen.PrimaryScreen.Bounds;\r\n            FormBorderStyle\u00a0= FormBorderStyle.None;\r\n            WindowState = FormWindowState.Maximized;\r\n\r\n        }<\/pre>\n<p>The full Code is posted below. This can be copy and pasted into a simple windows form project inside Visual Studio.<\/p>\n<p>&nbsp;<\/p>\n<pre lang=\"csharp\">using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Windows.Forms;\r\nusing System.Diagnostics;\r\n\r\nnamespace WindowsFormsApplication1\r\n{\r\n    public partial class Form1\u00a0: Form\r\n    {\r\n        public Form1()\r\n        {\r\n            InitializeComponent();\r\n\r\n            this.Bounds = Screen.PrimaryScreen.Bounds;\r\n            \/\/this.TopMost = true;\r\n            FormBorderStyle = FormBorderStyle.None;\r\n            WindowState\u00a0= FormWindowState.Maximized;\r\n\r\n        }\r\n\r\n        protected override CreateParams\u00a0CreateParams\r\n        {\r\n            get\r\n            {\r\n                const int CS_NOCLOSE = 0x200;\r\n\r\n                CreateParams cp = base.CreateParams;\r\n                cp.ClassStyle |= CS_NOCLOSE;\r\n\r\n                return cp;\r\n            }\r\n        }\r\n\r\n        private void button1_Click(object sender, EventArgs\u00a0e)\r\n        {\r\n            Process VmWareView\u00a0= new Process();\r\n\r\n            VmWareView.StartInfo.FileName = @\"C:\\Program Files\\VMware\\VMware View\\Client\\bin\\wswc.exe\";\r\n            VmWareView.StartInfo.Arguments = @\"-loginascurrentuser -standalone\u00a0-serverurl X.X.X.X \";\r\n\r\n            VmWareView.Start();\r\n        }\r\n    }\r\n}<\/pre>\n<p>Make sure to change the server url\u00a0in the Arguments list to the VmWare\u00a0View server in your environment.\u00a0 Lastly, once the software is compiled, copy it to the NComputing\u00a0host and configure Vspace\u00a0on the host to have this program run on startup. Documentation for configuring &#8220;run on startup&#8221;\u00a0for Vspace can be found here (page 51)\u00a0: <a href=\"http:\/\/www.ncomputing.com\/docs\/guides\/en\/guide_X550_X350.pdf\">http:\/\/www.ncomputing.com\/docs\/guides\/en\/guide_X550_X350.pdf<\/a><\/p>\n<p><strong>Conclusion :<\/strong><\/p>\n<p>While I have tested this solution and it\u00a0works, it is not recommended\u00a0to run this in a production environment since the command &#8220;-standalone&#8221; is not supported by VmWare. From the tests I have run,\u00a0audio and other functionality is working well. Please\u00a0ask questions or leave comments on\u00a0the problems or success with this solution.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Situation :\u00a0To have\u00a0Ncomputing\u00a0stations connect to a VmWare View virtual desktop. Technical Challenges\u00a0:\u00a0The major challenge is that the VmWare\u00a0View software will only allow one instance of the program to run. There are ways around this to support the Ncomputing\u00a0terminals, but they &hellip; <a href=\"http:\/\/constantinekrick.com\/?p=112\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[4],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1x8ho-1O","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/constantinekrick.com\/index.php?rest_route=\/wp\/v2\/posts\/112"}],"collection":[{"href":"http:\/\/constantinekrick.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/constantinekrick.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/constantinekrick.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/constantinekrick.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=112"}],"version-history":[{"count":27,"href":"http:\/\/constantinekrick.com\/index.php?rest_route=\/wp\/v2\/posts\/112\/revisions"}],"predecessor-version":[{"id":188,"href":"http:\/\/constantinekrick.com\/index.php?rest_route=\/wp\/v2\/posts\/112\/revisions\/188"}],"wp:attachment":[{"href":"http:\/\/constantinekrick.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/constantinekrick.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/constantinekrick.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}