<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Uncategorized on Remko's Blog</title><link>https://remkoweijnen.nl/blog/categories/uncategorized/</link><description>Recent content in Uncategorized on Remko's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 27 Feb 2023 10:00:00 +0000</lastBuildDate><atom:link href="https://remkoweijnen.nl/blog/categories/uncategorized/index.xml" rel="self" type="application/rss+xml"/><item><title>Quip hangs with waiting cursor</title><link>https://remkoweijnen.nl/blog/2023/02/27/quip-hangs-with-waiting-cursor/</link><pubDate>Mon, 27 Feb 2023 10:00:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2023/02/27/quip-hangs-with-waiting-cursor/</guid><description>&lt;p&gt;It's been a little while since I had a "nice" application problem to blog about. It's weird but I actually enjoy looking into those issues, well probably means I'm weird which is probably right.&lt;/p&gt;&lt;p&gt;I use a Virtual Desktop as my primary work desktop since my day 1 at work (and all the day 1's after).&lt;/p&gt;</description></item><item><title>Get registry key name from a handle</title><link>https://remkoweijnen.nl/blog/2022/10/18/get-registry-key-name-from-a-handle/</link><pubDate>Tue, 18 Oct 2022 10:00:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2022/10/18/get-registry-key-name-from-a-handle/</guid><description>&lt;p&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2025/08/Regedit_thumb.webp" alt="Regedit" width="64" height="64" class="wp-image-4421 alignleft" /&gt;Sometimes it can be useful to determine what registry key belongs to a registry key handle. And exampling is when hooking RegQueryValue so you can determine the registry key that a value belongs to instead of having to track the registry key when it's opened.&lt;/p&gt;</description></item><item><title>Downloading a Video from the Web without Browser Extension</title><link>https://remkoweijnen.nl/blog/2022/10/17/downloading-a-video-from-the-web-without-browser-extension/</link><pubDate>Mon, 17 Oct 2022 00:00:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2022/10/17/downloading-a-video-from-the-web-without-browser-extension/</guid><description>&lt;p&gt;Sometimes I want to download a video from a website for offline usage, for example when I want to watch it whilst travelling.&lt;/p&gt;&lt;p&gt;Most video websites don't want you do download videos as they of course want to show their ads and receive the clicks. I am not discussing the legal side here, up to you to check if it's legally allowed to download the video you're interested.&lt;/p&gt;</description></item><item><title>Get Rid of the Office 2019 Licensing Nag Screen</title><link>https://remkoweijnen.nl/blog/2022/10/11/get-rid-of-the-office-2019-licensing-nag-screen/</link><pubDate>Tue, 11 Oct 2022 10:00:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2022/10/11/get-rid-of-the-office-2019-licensing-nag-screen/</guid><description>&lt;p&gt;In my lab I have deployed Office 2019 to an Windows 2019 VM to do some testing with Citrix Virtual Apps and Desktops.&lt;/p&gt;
&lt;p&gt;The proper way to do this is to customize the Office installation using the Office Deployment Tool (ODT). The page even lists an example containing a value to accept the EULA.&lt;/p&gt;</description></item><item><title>The AWS Access Key Id you provided does not exist in our records using AWS PowerShell Cmdlets</title><link>https://remkoweijnen.nl/blog/2022/06/17/the-aws-access-key-id-you-provided-does-not-exist-in-our-records-using-aws-powershell-cmdlets/</link><pubDate>Fri, 17 Jun 2022 10:00:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2022/06/17/the-aws-access-key-id-you-provided-does-not-exist-in-our-records-using-aws-powershell-cmdlets/</guid><description>&lt;p&gt;After changing AWS accounts I resetup my API key so I could use the AWS PowerShell CmdLets.&lt;/p&gt;&lt;p&gt;However even though I was sure I configured everything correctly I couldn't call any EC2 cmdlet. More about that further below but let's refresh how to setup an API key for PowerShell:&lt;/p&gt;</description></item><item><title>Ubuntu crash when pasting files from VMware</title><link>https://remkoweijnen.nl/blog/2022/06/15/ubuntu-crash-when-pasting-files-from-vmware/</link><pubDate>Wed, 15 Jun 2022 10:00:00 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2022/06/15/ubuntu-crash-when-pasting-files-from-vmware/</guid><description>&lt;p&gt;It's been a while since I last wrote a post but it does feel good so I'm expecting to pick up blogging in a more regular cadence soon!&lt;/p&gt;&lt;p&gt;This one is a quicky though, as I had an annoying issue with Ubuntu 22.04 VM's running on VMware workstation.&lt;/p&gt;</description></item><item><title>No internet access from Edge and other Microsoft apps</title><link>https://remkoweijnen.nl/blog/2019/10/16/no-internet-access-from-edge-and-other-microsoft-apps/</link><pubDate>Wed, 16 Oct 2019 15:30:57 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2019/10/16/no-internet-access-from-edge-and-other-microsoft-apps/</guid><description>&lt;p&gt;I had a strange issue today: I couldn't open any webpage in the Edge browser on my Windows 10 machine:&lt;/p&gt;
&lt;figure class="wp-block-image"&gt;&lt;img width="678" height="525" loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2019/10/image.webp" alt="Edge browser with error message &amp;quot;Can't reach this page&amp;quot;" class="wp-image-4336"/&gt;&lt;figcaption&gt;Edge browser: "Can't reach this page"&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="alignleft"&gt;&lt;img width="112" height="68" loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2019/10/image-1.webp" alt="Network icon showing Internet access" class="wp-image-4337"/&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The network icon was showing that there was Internet access and a quick check on the command prompt showed that the connection (including name resolution appeared to work fine):&lt;/p&gt;
&lt;figure class="wp-block-image"&gt;&lt;img width="640" height="381" loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2019/10/image-2.webp" alt="Command prompt showing that ping to www.google.com works fine.
&lt;p&gt;ping &lt;a href="https://www.google.com"&gt;www.google.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pinging &lt;a href="https://www.google.com"&gt;www.google.com&lt;/a&gt; [172.217.168.196] with 32 bytes of data:&lt;br&gt;
Reply from 172.217.168.196: bytes=32 time=15ms TTL=55&lt;br&gt;
Reply from 172.217.168.196: bytes=32 time=14ms TTL=55&lt;/p&gt;
&lt;p&gt;Ping statistics for 172.217.168.196:&lt;br&gt;
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),&lt;br&gt;
Approximate round trip times in milli-seconds:&lt;br&gt;
Minimum = 14ms, Maximum = 15ms, Average = 14ms&amp;quot; class=&amp;ldquo;wp-image-4338&amp;rdquo;/&amp;gt;&lt;figcaption&gt;ping to &lt;a href="https://www.google.com"&gt;www.google.com&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Other browsers such as Firefox (my default browser) and Chrome also worked fine but some other Microsoft applications also didn't work such as the Microsoft Store:&lt;/p&gt;</description></item><item><title>DesktopAppConverter : error 'E_MANIFEST_USE_DEFAULT_VALUE_FAILED</title><link>https://remkoweijnen.nl/blog/2018/03/22/desktopappconverter-error-e_manifest_use_default_value_failed/</link><pubDate>Thu, 22 Mar 2018 11:54:54 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2018/03/22/desktopappconverter-error-e_manifest_use_default_value_failed/</guid><description>&lt;p&gt;I had a strange error today using the Desktop App Converter with the parameters given from the Store for Business.&lt;/p&gt;
&lt;p&gt;The conversion would fail with the following error:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2018/03/image.webp" class="glightbox" data-type="image" data-gallery="post-4302"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="DesktopAppConverter" src="https://remkoweijnen.nl/blog/wp-content/uploads/2018/03/image_thumb.webp" alt="DesktopAppConverter : error 'E_MANIFEST_USE_DEFAULT_VALUE_FAILED': Property 'Package.Applications.Application.Id' in AppxManifest.xml could not be set to the default value" width="436" height="73" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not sure why this fails as the PackageName is provided by the store and should be valid. An answer on stackoverflow suggested to use a different value for the PackageName parameter and then edit the manifest.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t like this method as manual modifications of the manifest often leads to errors when submitting the application to the store.&lt;/p&gt;
&lt;p&gt;So let&amp;rsquo;s have a look and see why we&amp;rsquo;re getting this error.&lt;/p&gt;
&lt;p&gt;I searched for &lt;code&gt;E_MANIFEST_USE_DEFAULT_VALUE_FAILED&lt;/code&gt; in the DesktopAppConverter folder and found 1 occurence in &lt;code&gt;ManifestOps.ps1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;From a look at the code it wasn&amp;rsquo;t immediately clear where the validation failed so I decided to debug it.&lt;/p&gt;</description></item><item><title>RAD Studio Tokyo 10.2(.2) Data Collection</title><link>https://remkoweijnen.nl/blog/2017/12/18/rad-studio-tokyo-10-2-2-data-collection/</link><pubDate>Mon, 18 Dec 2017 12:10:51 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/12/18/rad-studio-tokyo-10-2-2-data-collection/</guid><description>&lt;p&gt;Just a very quick note: I was just installing RAD Studio 10.2.2 when I noticed the installer has an Options button:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/12/image-2.webp" class="glightbox" data-type="image" data-gallery="post-4192"&gt;&lt;img loading="lazy" decoding="async" title="image" style="display: inline;" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/12/image_thumb-2.webp" width="417" height="316" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;So I clicked it to see what options are available and noticed that the &amp;quot;Embarcadero Customer Experience Program&amp;quot; is opted-in by default:&lt;/p&gt;</description></item><item><title>Where does the Citrix Linux VDA store settings?</title><link>https://remkoweijnen.nl/blog/2017/03/23/where-does-the-citrix-linux-vda-store-settings/</link><pubDate>Thu, 23 Mar 2017 17:02:44 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/03/23/where-does-the-citrix-linux-vda-store-settings/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image-21.webp" class="glightbox" data-type="image" data-gallery="post-4103"&gt;&lt;img loading="lazy" decoding="async" style="float: right; display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image_thumb-21.webp" alt="image" width="203" height="117" align="right" /&gt;&lt;/a&gt;I recently (well today really) started playing with the Citrix Linux VDA. I took Ubuntu to test because I happen to like Ubuntu.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t get it to work correctly right away though and during troubleshooting I wanted to know where the VDA is storing it&amp;rsquo;s settings.&lt;/p&gt;
&lt;p&gt;I found the following file &lt;code&gt;/etc/xdl/ctx-vda.conf&lt;/code&gt; with the following contents:&lt;/p&gt;</description></item><item><title>On forbes.com, Cookies and Ads</title><link>https://remkoweijnen.nl/blog/2017/03/14/forbes-com-cookies-ads/</link><pubDate>Tue, 14 Mar 2017 16:34:52 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/03/14/forbes-com-cookies-ads/</guid><description>&lt;p&gt;Even though I try not to visit the forbes.com site anymore due to their heavy usages of ads, anti adblocker and overwhelming number of cookies they&amp;rsquo;re trying to push, sometimes however I accidentally follow a tweet that leads to forbes.com and just notice it to late.&lt;/p&gt;
&lt;p&gt;Besides wasting your bandwidth, mobile data and especially time there have been a few occasions were the forbes.com page was actually &lt;a href="http://www.networkworld.com/article/3021113/security/forbes-malware-ad-blocker-advertisements.html"&gt;serving malware&lt;/a&gt; from their adfeeds.&lt;/p&gt;
&lt;p&gt;It annoys me bigtime so let&amp;rsquo;s &amp;ldquo;fix&amp;rdquo; this:&lt;/p&gt;
&lt;p&gt;First thing that happens upon visiting the forbes site is that you get a blurred background with a random ad or quote of the day and you need to press &lt;code&gt;Continue to article&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image-16.webp" class="glightbox" data-type="image" data-gallery="post-4074"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image_thumb-16.webp" alt="image" width="240" height="43" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you open the Developer console in Chrome (Application tab) you can see that Forbes uses a cookie that expires in 24 hours. This cookie make sure that you don&amp;rsquo;t see the &amp;ldquo;welcome&amp;rdquo; ad for 24 hours:&lt;/p&gt;</description></item><item><title>Convert Executable to PowerShell</title><link>https://remkoweijnen.nl/blog/2017/03/13/convert-executable-powershell/</link><pubDate>Mon, 13 Mar 2017 17:25:56 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/03/13/convert-executable-powershell/</guid><description>&lt;p&gt;Recently I stumbled upon an executable that appeared to be a PowerShell script converted into an executable.&lt;/p&gt;
&lt;p&gt;I was curious to the actual script so I decided to have a look and see how I could convert the executable back into PowerShell.&lt;/p&gt;
&lt;p&gt;Having seen &lt;a href="http://reverseengineering.stackexchange.com/questions/34/checking-if-an-exe-is-actually-a-jar-wrapped-in-an-exe/54#54"&gt;similar techniques&lt;/a&gt; to turn vb scripts and java jar&amp;rsquo;s into executables I first looked if this particular executable was simply carrying the payload in the resource section.&lt;/p&gt;
&lt;p&gt;I opened the executable with &lt;a href="http://www.angusj.com/resourcehacker/"&gt;Resource Hacker&lt;/a&gt; and saw 2 resources (note that I am using a simple HelloWorld executable here in the screenshots). The first resource, named 1, is clearly a Unicode string with the title:&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image.webp" class="glightbox" data-type="image" data-gallery="post-4034"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/03/image_thumb.webp" alt="Resource Hacker Screenshot showing the resources" width="425" height="234" /&gt;&lt;/a&gt;&lt;figcaption&gt;Resource Hacker - HelloWorld.exe&lt;/figcaption&gt;&lt;/figure&gt;</description></item><item><title>Google Earth fix for XenApp, RDSH &amp; Horizon</title><link>https://remkoweijnen.nl/blog/2017/02/20/google-earth-fix-xenapp-rdsh-horizon/</link><pubDate>Mon, 20 Feb 2017 20:26:51 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/02/20/google-earth-fix-xenapp-rdsh-horizon/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/Google_Earth_logo.webp" class="glightbox" data-type="image" data-gallery="post-4004"&gt;&lt;img loading="lazy" decoding="async" class="alignnone" style="float: right; margin: 0px 0px 0px 5px; display: inline;" title="Google Earth Logo" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/Google_Earth_logo_thumb.webp" alt="Google Earth Logo" width="108" height="128" align="right" /&gt;&lt;/a&gt;Both Google Earth and Google Earth Enterprise do not work correctly for multiple users on shared Hosted Shared Desktops (I still prefer to call it Server Based Computing but that&amp;rsquo;s likely because I&amp;rsquo;m an oldtimer).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Problem summary&lt;/strong&gt;&lt;br&gt;
So let&amp;rsquo;s look at the actual issue: the first user on a server is able to launch Google Earth but for any subsequent users on the same server Google Earth fails silently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Problem details&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Google Earth uses various synchronization objects such as Events and Mutexes but registers those in the &lt;strong&gt;\Global&lt;/strong&gt; namespace instead of the &lt;strong&gt;\Local&lt;/strong&gt; namespace.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Show Client IP Address when using NetScaler as a Reverse Proxy</title><link>https://remkoweijnen.nl/blog/2017/02/10/show-client-ip-address-when-using-netscaler-as-a-reverse-proxy/</link><pubDate>Fri, 10 Feb 2017 14:10:45 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/02/10/show-client-ip-address-when-using-netscaler-as-a-reverse-proxy/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/image-3.webp" class="glightbox" data-type="image" data-gallery="post-3963"&gt;&lt;img loading="lazy" decoding="async" style="float: right; display: inline;" title="Citrix NetScaler" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/image_thumb-3.webp" alt="Citrix NetScaler Logo" width="144" height="77" align="right" /&gt;&lt;/a&gt;Recently I switched over my blog from a hoster to a self hosted VM. In my setup I am using Citrix NetScaler as a reverse proxy.&lt;/p&gt;
&lt;p&gt;Simular to when you&amp;rsquo;re using a 3rd party reverse proxy such as &lt;a href="https://www.cloudflare.com/"&gt;CloudFlare&lt;/a&gt; you will see the IP address from the reverse proxy instead of the actual Client IP Address on your webserver.&lt;/p&gt;
&lt;p&gt;This means that your logging will all show the same, internal, IP address and that IP Based Access Rules will not work.&lt;/p&gt;
&lt;p&gt;Fortunately this is easy to solve by having NetScaler add the Client IP Address in the headers and rewriting the address on your webserver.&lt;/p&gt;</description></item><item><title>Blog improvements</title><link>https://remkoweijnen.nl/blog/2017/02/07/blog-improvements/</link><pubDate>Tue, 07 Feb 2017 15:56:21 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2017/02/07/blog-improvements/</guid><description>&lt;p&gt;When I started this blog in 2007 (wow that&amp;rsquo;s almost 10 years ago) I went for a cheap web hoster with a reasonable performance to host it.&lt;/p&gt;
&lt;p&gt;In the beginning performance was acceptable but over the years it has degraded and of course user experience standards have changed.&lt;/p&gt;
&lt;p&gt;I decided it was time to do something about it so I&amp;rsquo;ve moved the blog from a shared platform to my own server.&lt;/p&gt;
&lt;p&gt;This server is running on optimized flash storage  where most writes are DeDuplicated and never actually hits the flash disks:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/image.webp" class="glightbox" data-type="image" data-gallery="post-3764"&gt;&lt;img loading="lazy" decoding="async" style="display: inline;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2017/02/image_thumb.webp" alt="image" width="418" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Twitter Analytics and AdBlock Plus</title><link>https://remkoweijnen.nl/blog/2014/08/28/twitter-analytics-adblock-plus/</link><pubDate>Thu, 28 Aug 2014 13:35:47 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2014/08/28/twitter-analytics-adblock-plus/</guid><description>&lt;p&gt;Twitter has opened access to Analytics for all users. However when you use an Ad Blocker, like Adblock Plus, you'll get the following error:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2014/08/image.webp" data-type="image" data-gallery="post-3537"&gt;&lt;img loading="lazy" decoding="async" title="Twitter Analytics" style="display: inline" alt="A problem occurred while loading the page. To use this site, you need to disable AdBlock or any other ads-blocking extension you are using, or customize it to show ads on this site" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/08/image_thumb.webp" width="420" height="63" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For Adblock Plus you can fix this by adding a filter: go to Filter Preferences and on the &amp;quot;Custom filters&amp;quot; tab add a new filter within a filter group (or create a filter group for this rule).&lt;/p&gt; &lt;p&gt;Use this as a filter rule:&lt;/p&gt; &lt;p&gt;&lt;code&gt;@@||ads.twitter.com/stylesheets/ads-allow.css&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2014/08/SNAGHTMLea2974c.webp" data-type="image" data-gallery="post-3537"&gt;&lt;img loading="lazy" decoding="async" title="SNAGHTMLea2974c" style="display: inline" alt="SNAGHTMLea2974c" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/08/SNAGHTMLea2974c_thumb.webp" width="423" height="201" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And don't forget to Enable the rule!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;EDIT: &lt;/strong&gt;Twitter user &lt;a title="https://twitter.com/Ertraeglichkeit" href="https://twitter.com/Ertraeglichkeit"&gt;@Ertraeglichkeit&lt;/a&gt; mentioned a different method:&lt;/p&gt;</description></item><item><title>Set alert parameters with Visual Studio Authoring Extensions</title><link>https://remkoweijnen.nl/blog/2014/07/18/set-alert-parameters-visual-studio-authoring-extensions/</link><pubDate>Fri, 18 Jul 2014 16:08:33 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2014/07/18/set-alert-parameters-visual-studio-authoring-extensions/</guid><description>&lt;p&gt;&lt;img loading="lazy" decoding="async" title="SCOM Logo" alt="System Center Operations Manager Logo" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image_thumb.webp" width="89" align="right" height="95" /&gt;In a SCOM Management Pack Custom Properties can be used for Alert Description and Notification as described in this &lt;a href="http://blogs.technet.com/b/kevinholman/archive/2007/12/12/adding-custom-information-to-alert-descriptions-and-notifications.aspx" target="_blank"&gt;blog&lt;/a&gt; by Kevin Holman.&lt;/p&gt; &lt;p&gt;In my case I wanted to add the Display Name and the Performance Counter Value in a Performance Threshold Monitor. In XML it would look this this:&lt;/p&gt; 
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;span class="codelang"&gt;xml&lt;/span&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".xml" href="data:text/plain;charset=utf-8;base64,ICAgICAgICA8YWxlcnRzZXR0aW5ncyBhbGVydG1lc3NhZ2U9Ik1lbW9yeS5Vc2FnZS5BbGVydE1lc3NhZ2UiPgogICAgICAgICAgPGFsZXJ0b25zdGF0ZT5FcnJvcjwvYWxlcnRvbnN0YXRlPgogICAgICAgICAgPGF1dG9yZXNvbHZlPnRydWU8L2F1dG9yZXNvbHZlPgogICAgICAgICAgPGFsZXJ0cHJpb3JpdHk&amp;#43;Tm9ybWFsPC9hbGVydHByaW9yaXR5PgogICAgICAgICAgPGFsZXJ0c2V2ZXJpdHk&amp;#43;TWF0Y2hNb25pdG9ySGVhbHRoPC9hbGVydHNldmVyaXR5PgogICAgICAgICAgPGFsZXJ0cGFyYW1ldGVycz4KICAgICAgICAgICAgPGFsZXJ0cGFyYW1ldGVyMT4kVGFyZ2V0L0hvc3QvUHJvcGVydHlbVHlwZT0iU3lzdGVtIVN5c3RlbS5FbnRpdHkiXS9EaXNwbGF5TmFtZSQ8L2FsZXJ0cGFyYW1ldGVyMT4KICAgICAgICAgICAgPGFsZXJ0cGFyYW1ldGVyMj4kRGF0YS9Db250ZXh0L1ZhbHVlJDwvYWxlcnRwYXJhbWV0ZXIyPgogICAgICAgICAgPC9hbGVydHBhcmFtZXRlcnM&amp;#43;CiAgICAgICAgPC9hbGVydHNldHRpbmdzPg=="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertsettings&lt;/span&gt; &lt;span class="na"&gt;alertmessage=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Memory.Usage.AlertMessage&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertonstate&amp;gt;&lt;/span&gt;Error&lt;span class="nt"&gt;&amp;lt;/alertonstate&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;autoresolve&amp;gt;&lt;/span&gt;true&lt;span class="nt"&gt;&amp;lt;/autoresolve&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertpriority&amp;gt;&lt;/span&gt;Normal&lt;span class="nt"&gt;&amp;lt;/alertpriority&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertseverity&amp;gt;&lt;/span&gt;MatchMonitorHealth&lt;span class="nt"&gt;&amp;lt;/alertseverity&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertparameters&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertparameter1&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;#34;System!System.Entity&amp;#34;]/DisplayName$&lt;span class="nt"&gt;&amp;lt;/alertparameter1&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;alertparameter2&amp;gt;&lt;/span&gt;$Data/Context/Value$&lt;span class="nt"&gt;&amp;lt;/alertparameter2&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/alertparameters&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/alertsettings&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;But how to add these parameters when using the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30169"&gt;System Center 2012 Visual Studio Authoring Extensions&lt;/a&gt;?&lt;/p&gt;</description></item><item><title>Cannot connect to iTunes Store after enabling https scanning in Sophos UTM</title><link>https://remkoweijnen.nl/blog/2014/07/16/cannot-connect-to-itunes-store-after-enabling-https-scanning-in-sophos-utm/</link><pubDate>Wed, 16 Jul 2014 18:33:25 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2014/07/16/cannot-connect-to-itunes-store-after-enabling-https-scanning-in-sophos-utm/</guid><description>&lt;p&gt;&lt;img title="Sophos UTM" style="float: right; display: inline" alt="Sophos UTM Icon" src="https://remkoweijnen.nl/blog/wp-content/uploads/recovered/6bda69e4382ad9b8.png" align="right" /&gt;I am currently implementing &lt;a href="http://www.sophos.com/en-us/products/free-tools/sophos-utm-home-edition.aspx" target="_blank"&gt;Sophos UTM&lt;/a&gt; and I quite like this solution. It is free up for home usage and can easily be installed on a hypervisor.&lt;/p&gt; &lt;p&gt;I wanted to scan encrypted traffic (ssl) as well so I activated the &amp;quot;Decrypt and scan&amp;quot; option:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image2.webp" class="glightbox thickbox" data-type="image" data-gallery="post-3495"&gt;&lt;img loading="lazy" decoding="async" title="image" style="display: inline" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image_thumb2.webp" width="163" height="94" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;When testing this on one of my iPad's I noticed that the App Store didn't work properly anymore.&lt;/p&gt; &lt;p&gt;When I tried to update applications I got the following error: &amp;quot;&lt;strong&gt;Cannot connect to iTunes Store&lt;/strong&gt;&amp;quot;. Additionally when I searched for Apps the search would return no results.&lt;/p&gt;</description></item><item><title>non-existent schema type 'Snmp!System.SnmpVarBindsSchema' error in SCOM</title><link>https://remkoweijnen.nl/blog/2014/07/13/non-existent-schema-type-snmpsystem-snmpvarbindsschema-error-scom/</link><pubDate>Sun, 13 Jul 2014 23:50:59 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2014/07/13/non-existent-schema-type-snmpsystem-snmpvarbindsschema-error-scom/</guid><description>&lt;p&gt;&lt;img loading="lazy" decoding="async" title="SCOM Logo" alt="System Center Operations Manager Logo" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image_thumb.webp" width="89" align="right" height="95" /&gt;Today I encounterd what seems to be a bug in the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30169"&gt;System Center 2012 Visual Studio Authoring Extensions&lt;/a&gt;. I wanted to define a Performance Collection Rule that reads out the percentage of free memory from an SNMP device. &lt;/p&gt; &lt;p&gt;Since the device returns only the percentage of used memory I needed to use the &lt;a href="http://msdn.microsoft.com/en-us/library/jj130485.aspx" target="_blank"&gt;ComputedPerfProvider&lt;/a&gt; provider to substract the used memory percentage from 100.&lt;/p&gt; &lt;p&gt;I could of course report used memory instead of free memory but I wanted the resulst to appear in the default SCOM Performance View, which only lists Free Memory:&lt;/p&gt; &lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image1.webp" data-type="image" data-gallery="post-3472"&gt;&lt;img loading="lazy" decoding="async" title="SCOM Performance View" style="display: inline" alt="System Center Operations Manager | Default Performance View" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image_thumb1.webp" width="240" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Where to find System.NetworkManagement.Monitoring.mp?</title><link>https://remkoweijnen.nl/blog/2014/07/13/where-to-find-system-networkmanagement-monitoring-mp/</link><pubDate>Sun, 13 Jul 2014 13:22:13 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2014/07/13/where-to-find-system-networkmanagement-monitoring-mp/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image.webp" class="glightbox thickbox" data-type="image" data-gallery="post-3465"&gt;&lt;img loading="lazy" decoding="async" title="SCOM Logo" style="float: right; display: inline" alt="System Center Operations Manager Logo" src="https://remkoweijnen.nl/blog/wp-content/uploads/2014/07/image_thumb.webp" width="89" align="right" height="95" /&gt;&lt;/a&gt;I am currently working on a Management Pack for SCOM and I have studies a few examples on adding processor and memory counters. &lt;/p&gt; &lt;p&gt;These examples all reference a Management Pack named &amp;quot;System.NetworkManagement.Monitoring.mp&amp;quot; but this Management Pack is not bundled with the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30169" target="_blank"&gt;System Center 2012 Visual Studio Authoring Extensions&lt;/a&gt;. &lt;/p&gt;</description></item><item><title/><link>https://remkoweijnen.nl/blog/2014/05/09/3448/</link><pubDate>Fri, 09 May 2014 00:14:31 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2014/05/09/3448/</guid><description>&lt;p&gt;&lt;a href="http://stealthpuppy.com/"&gt;Aaron Parker&lt;/a&gt; was talking about the uninstall guid in his session “Hands off my Golden Image Redux” at Citrix Synergy.&lt;/p&gt;
&lt;p&gt;I remembered that I had written a small PowerShell script to read out the uninstall GUID from an MSI file. This way you do not need to actually install the software to determine the uninstall GUID.&lt;/p&gt;</description></item><item><title>My presentation at E2EVC in Rome</title><link>https://remkoweijnen.nl/blog/2013/10/29/my-presentation-at-e2evc-in-rome/</link><pubDate>Tue, 29 Oct 2013 21:44:43 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2013/10/29/my-presentation-at-e2evc-in-rome/</guid><description>&lt;p&gt;&lt;a class="glightbox thickbox" href="https://remkoweijnen.nl/blog/wp-content/uploads/2013/10/image.webp" data-type="image" data-gallery="post-3409"&gt;&lt;img loading="lazy" decoding="async" style="float: right; display: inline;" title="image" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2013/10/image_thumb.webp" width="159" height="124" align="right" /&gt;&lt;/a&gt;I will be presenting a session at E2EVC in Rome next weekend.&lt;/p&gt;
&lt;p&gt;Recently I published an article on my blog that shows how to &lt;a href="https://remkoweijnen.nl/blog/2013/09/24/run-a-process-when-citrix-receiver-exits/" target="_blank"&gt;run an executable of choice when the Citrix Receiver exits&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Exchange 2010 Install-ADTopologyService 0x800706D</title><link>https://remkoweijnen.nl/blog/2011/07/05/exchange-2010-install-adtopologyservice-0x800706d/</link><pubDate>Tue, 05 Jul 2011 09:43:04 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/07/05/exchange-2010-install-adtopologyservice-0x800706d/</guid><description>&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/06/SNAGHTML1ca684c.webp"&gt;&lt;img loading="lazy" decoding="async" style="margin: 0px 10px 5px 0px; display: inline; float: right" title="Exchange 2010" border="0" alt="Exchange 2010 Logo" align="right" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/06/SNAGHTML1ca684c_thumb.webp" width="49" height="49" /&gt;&lt;/a&gt; &lt;p&gt;I got the following error while installing Exchange 2010: &amp;ldquo;There are no more endpoints available from the endpoint mapper. (Exception from HRESULT: 0x800706D9)&amp;rdquo; &lt;/p&gt; &lt;p&gt;I looked up HRESULT 0x800706D9 which is defined in &lt;em&gt;winerror.h&lt;/em&gt; as EPT_S_NOT_REGISTERED with the same error text.&lt;/p&gt;</description></item><item><title>Crack WEP Encryption</title><link>https://remkoweijnen.nl/blog/2011/06/14/crack-wep-encryption/</link><pubDate>Tue, 14 Jun 2011 11:55:39 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/06/14/crack-wep-encryption/</guid><description>&lt;p&gt;I think everybody knows that using &lt;a href="http://en.wikipedia.org/wiki/Wired_Equivalent_Privacy" target="_blank"&gt;WEP&lt;/a&gt; to encrypt your WiFi network is not very safe. To demonstrate this I will show you how easy it is to crack the WEP encryption in this post.&lt;/p&gt;
&lt;p&gt;Note that I am using my own Access Point here so I am not actually cracking someone else&amp;rsquo;s WEP Key.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;&lt;a href="http://www.backtrack-linux.org/downloads/" target="_blank"&gt;back|track Linux distribution&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
	&lt;li&gt;&lt;span style="color: #35383d;"&gt;USB WiFi card (most internal WiFi cards will not work)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;&lt;/li&gt;
	&lt;li&gt;In this post I am using the 32 bit back|track 5 VMWare image which you can use with VMWare Workstation or VMWare player.&lt;a class="glightbox" data-type="image" data-gallery="post-1833" href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/06/image.webp"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="back|track downloads" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/06/image_thumb.webp" border="0" alt="back|track downloads" width="244" height="145" /&gt;&lt;/a&gt;
&lt;p&gt;After starting the back track Virtual Machine you can login with username &lt;strong&gt;root&lt;/strong&gt; and password &lt;strong&gt;toor&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox" data-type="image" data-gallery="post-1833" href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/06/image1.webp"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="back track 5 logon screen" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/06/image_thumb1.webp" border="0" alt="back track 5 logon screen" width="428" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Installing Dell Wireless 5530 HSPA Mini PCI</title><link>https://remkoweijnen.nl/blog/2011/05/27/installing-dell-wireless-5530-hspa-mini-pci/</link><pubDate>Fri, 27 May 2011 17:40:14 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/05/27/installing-dell-wireless-5530-hspa-mini-pci/</guid><description>&lt;p&gt;&lt;strong&gt;EDIT:&lt;/strong&gt; See my &lt;a href="https://remkoweijnen.nl/blog/2011/11/13/installing-dell-wireless-5530-hspa-mini-pc-2/"&gt;followup article&lt;/a&gt; to learn how to reverse driver_auth.exe, decrypt and encrypt dell_wwan_sysID.dat.&lt;/p&gt;
&lt;p&gt;I bought a Dell Wireless 5530 HSPA Mini PCI card for my Dell Precision M4500 laptop.&lt;/p&gt;
&lt;p&gt;This is a small expansion card that works together with the built in SIM card slot that is present in most Dell (Business) laptops.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/016.jpg" class="glightbox" data-type="image" data-gallery="post-1809"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="-) 016" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/016_thumb.jpg" alt="-) 016" width="283" height="212" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This SIM card slot is usually located near the battery compartment:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/SimCardSlot.webp" class="glightbox" data-type="image" data-gallery="post-1809"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SimCardSlot" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/SimCardSlot_thumb.webp" alt="SimCardSlot" width="283" height="212" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The card was installed in a few minutes since the antenna cables were present already and on my laptop I only needed to remove the backcover with just one screw.&lt;/p&gt;
&lt;p&gt;Then I wanted to install the required software but this card is not officially supported in the M4500 (I bought this card because it was much cheaper on ebay).&lt;/p&gt;
&lt;p&gt;So I took the driver from the M4400/Latitude E range, labeled &lt;a title="R251153.exe" href="http://ftp.dell.com/comm/R251153.exe"&gt;R251153&lt;/a&gt; but I got this error message when installing:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/image22.webp" class="glightbox" data-type="image" data-gallery="post-1809"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Internal error 23000" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/05/image_thumb22.webp" alt="Internal error 23000. Authentification failed. The Dell Wireless 5540 HSPA Mobile Broadband Mini-Card cannot be installed on this computer" width="324" height="153" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;</description></item><item><title>Post Ratings Rant</title><link>https://remkoweijnen.nl/blog/2011/04/13/post-ratings-rant/</link><pubDate>Wed, 13 Apr 2011 22:32:30 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/04/13/post-ratings-rant/</guid><description>&lt;p&gt;On my blog I offer visitors the options to rate the articles I write using either thumbs up/down or a 1-10 star rating.&lt;/p&gt; &lt;p&gt;I am interested in what content my readers like so these ratings (and of course comments you leave) indicate what kind of articles you like and which you don't.&lt;/p&gt; &lt;p&gt;However some people feel the need to abuse this, take a look at this:&lt;/p&gt; &lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/04/image2.webp" class="glightbox" data-type="image" data-gallery="post-1674"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/04/image_thumb2.webp" width="175" height="244" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;</description></item><item><title>Wordpress redirects to wp-admin/install.php</title><link>https://remkoweijnen.nl/blog/2011/04/13/wordpress-redirects-to-wp-admininstall-php/</link><pubDate>Wed, 13 Apr 2011 22:14:36 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2011/04/13/wordpress-redirects-to-wp-admininstall-php/</guid><description>&lt;p&gt;My blog has been down for a short period, if you tried to open Wordpress would redirect to wp-admin.install.php and you would see this message:&lt;/p&gt;
&lt;p&gt;&lt;a class="glightbox" data-type="image" data-gallery="post-1665" href="https://remkoweijnen.nl/blog/wp-content/uploads/2011/04/image.webp"&gt;&lt;img loading="lazy" decoding="async" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="https://remkoweijnen.nl/blog/wp-content/uploads/2011/04/image_thumb.webp" border="0" alt="image" width="394" height="132" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>International Karate+</title><link>https://remkoweijnen.nl/blog/2010/12/15/international-karate/</link><pubDate>Wed, 15 Dec 2010 22:35:13 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/12/15/international-karate/</guid><description>&lt;p&gt;A few weeks ago I turned on my old &lt;a href="http://en.wikipedia.org/wiki/Amiga" target="_blank"&gt;Commodore Amiga&lt;/a&gt; A1200 which had been stored for 15 years or so.&lt;/p&gt;
&lt;p&gt;The idea was that my kids can use it as a game computer but tonight I couldn't resist and I played some of the old games.&lt;/p&gt;</description></item><item><title>Change Driveletter Commandline Tool</title><link>https://remkoweijnen.nl/blog/2010/10/20/change-driveletter-commandline-tool/</link><pubDate>Wed, 20 Oct 2010 14:04:35 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/10/20/change-driveletter-commandline-tool/</guid><description>&lt;p&gt;Some time ago (2008 actually) I wrote a &lt;a href="https://remkoweijnen.nl/blog/2008/12/09/commandline-tool-to-change-drive-letter-assignment/" target="_blank"&gt;tool that can assign driveletters&lt;/a&gt; given a volumename. I use it myself after SysPrep operations to assign the desired drive letters. For instance after cloning a Virtual Machine from a template.&lt;/p&gt;
&lt;p&gt;I noticed that I updated this tool sometime after the original post but never uploaded it here. The most important changes are:&lt;/p&gt;</description></item><item><title>Default username password HP 8/20q FC San Switch</title><link>https://remkoweijnen.nl/blog/2010/10/18/default-username-password-hp-820q-fc-san-switch/</link><pubDate>Mon, 18 Oct 2010 10:18:08 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/10/18/default-username-password-hp-820q-fc-san-switch/</guid><description>&lt;p&gt;Again a note that is mainly for myself since I tend to forget these kind of things and always spend much time to look it up...&lt;/p&gt;
&lt;p&gt;Default settings for the HP 8/20q FC SAN Switch are:&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;span class="codelang"&gt;text&lt;/span&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".txt" href="data:text/plain;charset=utf-8;base64,dXNlcm5hbWU6IGFkbWluCgpwYXNzd29yZDogcGFzc3dvcmQKCmRlZmF1bHQgaXA6IDEwLjAuMC4x"&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;username: admin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;password: password
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;default ip: 10.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>HP Simple SAN Connection Manager (SSCM)</title><link>https://remkoweijnen.nl/blog/2010/10/14/hp-simple-san-connection-manager-sccm/</link><pubDate>Thu, 14 Oct 2010 14:42:50 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/10/14/hp-simple-san-connection-manager-sccm/</guid><description>&lt;p&gt;If you are looking for the HP Simple SAN Connection Manager Software (aka HP SSCM) then you&amp;rsquo;ve come to the right place. HP seems to be really good at hiding their software on the web but I found it.&lt;/p&gt;
&lt;p&gt;Go to &lt;a href="http://www.software.hp.com/kiosk" target="_blank"&gt;&lt;a href="http://www.software.hp.com/kiosk"&gt;http://www.software.hp.com/kiosk&lt;/a&gt;&lt;/a&gt; and user the following credentials to access:&lt;/p&gt;</description></item><item><title>Default username password HP Storageworks P2000</title><link>https://remkoweijnen.nl/blog/2010/10/14/default-username-password-hp-storageworks-p2000/</link><pubDate>Thu, 14 Oct 2010 14:38:02 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/10/14/default-username-password-hp-storageworks-p2000/</guid><description>&lt;p&gt;Just a reminder to Self for future reference, the default credentials for HP Storageworks P2000 (G3) are:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;span class="codelang"&gt;text&lt;/span&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".txt" href="data:text/plain;charset=utf-8;base64,dXNlcm5hbWU6IG1hbmFnZQoKcGFzc3dvcmQ6ICFtYW5hZ2U="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;username: manage
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;password: !manage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;section class="comments"&gt;
&lt;h2&gt;14 Comments&lt;/h2&gt;
&lt;ol class="comment-list"&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;Thx&lt;/span&gt; &lt;time datetime="2010-11-05"&gt;Nov 5, 2010&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;100% THX!&lt;/p&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;&lt;a href="https://remkoweijnen.nl/blog/" rel="nofollow ugc"&gt;Remko&lt;/a&gt;&lt;/span&gt; &lt;time datetime="2010-11-05"&gt;Nov 5, 2010&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;You're welcome and thanks for your comment!&lt;/p&gt;</description></item><item><title>Certified</title><link>https://remkoweijnen.nl/blog/2010/09/13/certified/</link><pubDate>Mon, 13 Sep 2010 18:56:53 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/09/13/certified/</guid><description>&lt;p&gt;Just a quicky, I am little excited because my certifications are going well.&lt;/p&gt;
&lt;p&gt;Last month I passed the final exam for &lt;a href="http://www.microsoft.com/learning/en/us/certification/mcitp.aspx#tab2"&gt;MCITP Enterprise Administrator&lt;/a&gt; and a few minutes agoI got a mail from Citrix confirming that I passed the beta exam for XenApp 6 which means I am certified (&lt;a href="http://www.citrixtraining.com/courses/course_view.cfm/course_id:295/cgroup_id:26"&gt;CCA for XenApp 6&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Rad Studio XE has been released</title><link>https://remkoweijnen.nl/blog/2010/08/30/rad-studio-xe-has-been-released/</link><pubDate>Mon, 30 Aug 2010 22:15:04 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/08/30/rad-studio-xe-has-been-released/</guid><description>&lt;p&gt;RAD Studio XE has (just?) been released, see &lt;a href="http://www.embarcadero.com/rad-studio-xe-preview"&gt;http://www.embarcadero.com/rad-studio-xe-preview&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Rating and contact options</title><link>https://remkoweijnen.nl/blog/2010/06/29/rating-and-contact-options/</link><pubDate>Tue, 29 Jun 2010 13:49:09 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2010/06/29/rating-and-contact-options/</guid><description>&lt;p&gt;I have installed a new rating plugin that gives you, my readers, a convenient and fast method to give feedback. So please do so, let me know what posts you find interesting!&lt;/p&gt;
&lt;p&gt;I have also added a &lt;a href="https://remkoweijnen.nl/blog/contact/"&gt;Contact&lt;/a&gt; form in case you have any questions, article suggestions or maybe even consultation requests. The contact page is an attempt to streamline the e-mails I get from this blog so I hope this will work :-)&lt;/p&gt;</description></item><item><title>Downloads working again</title><link>https://remkoweijnen.nl/blog/2009/12/03/downloads-working-again/</link><pubDate>Thu, 03 Dec 2009 20:58:57 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/12/03/downloads-working-again/</guid><description>&lt;p&gt;The backup has been restored and all downloads should be working again. If you do find a non working download please leave a comment.&lt;/p&gt;
&lt;section class="comments"&gt;
&lt;h2&gt;1 Comments&lt;/h2&gt;
&lt;ol class="comment-list"&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;&lt;a href="http://www.kiloupload.com/file/9f90c00d37374a96efb1845f6b68407d/windows.vista.x86.kernel.patch-patch.exe.zip" rel="nofollow ugc"&gt;T. Crews&lt;/a&gt;&lt;/span&gt; &lt;time datetime="2010-02-12"&gt;Feb 12, 2010&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;http://www.kiloupload.com/file/9f90c00d37374a96efb1845f6b68407d/windows.vista.x86.kernel.patch-patch.exe.zip&lt;/p&gt;&lt;p&gt;This link no longer works. At least doesn't seem to be. Would be wonderful if you could redirect me to one that does work. Thank you much.&lt;/p&gt;</description></item><item><title>404 error on Downloads</title><link>https://remkoweijnen.nl/blog/2009/12/02/404-error-on-downloads/</link><pubDate>Wed, 02 Dec 2009 23:41:59 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/12/02/404-error-on-downloads/</guid><description>&lt;p&gt;Most of the downloads are not working (error 404) at the moment, I am waiting for my hoster to restore some stuff from the backup so please be patient&amp;hellip;&lt;br&gt;
&lt;span style="color: #ff0000;"&gt;U&lt;span style="color: #ff0000;"&gt;PDATE: backup is restored and downloads are working again!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>The case of the Unattended Install</title><link>https://remkoweijnen.nl/blog/2009/11/11/the-case-of-the-unattended-install/</link><pubDate>Wed, 11 Nov 2009 17:47:28 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/11/11/the-case-of-the-unattended-install/</guid><description>&lt;p&gt;I needed to do an unattended install of an application (in this case Exact Globe 2003) on Citrix. In this case the application provides a special executable, WSetup.exe for an unattended install.&lt;/p&gt;
&lt;p&gt;WSetup takes several parameters, the most important ones are:&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;span class="codelang"&gt;text&lt;/span&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".txt" href="data:text/plain;charset=utf-8;base64,L0k6IEluc3RhbGxhdGlvbiBQYXRoCi9TOiBJbnN0YWxsIFR5cGUKL0lNOiBJbnN0YWxsYXRpb24gTW9kZQ=="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/I: Installation Path
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/S: Install Type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/IM: Installation Mode&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;So this appeared to be an easy task, however when testing the Deployment the /I parameter seemed to be ignored and the whole thing was installed in C:\Program Files.&lt;/p&gt;
&lt;p&gt;I analyzed what WSetup.exe does with my favorite tool, Ida Pro and at first all seemed ok. WSetup determines the default location of the Program Files Directory by reading the ProgramFilesDir registry key (which is of course C:\Program Files).&lt;/p&gt;</description></item><item><title>Download for Tech-Track #1</title><link>https://remkoweijnen.nl/blog/2009/01/08/download-for-tech-track-1/</link><pubDate>Thu, 08 Jan 2009 15:52:50 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2009/01/08/download-for-tech-track-1/</guid><description>&lt;p&gt;Iedereen bedankt voor de deelname!&lt;/p&gt;
&lt;p&gt;De download bevat de presentaties (inclusief de ontbrekende slides), de spy++ tool en links naar de Toolkit.&lt;/p&gt;
&lt;p&gt;&lt;a class="download" href="https://remkoweijnen.nl/blog/files/TechTrack1.zip"&gt;TechTrack1.zip&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Switch between Java Versions</title><link>https://remkoweijnen.nl/blog/2008/11/12/switch-between-java-versions/</link><pubDate>Wed, 12 Nov 2008 16:37:52 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/11/12/switch-between-java-versions/</guid><description>&lt;p&gt;On a Citrix environment 2 different applications were required. One of the applications required java version 1.5 (and didn&amp;rsquo;t work with 1.6) and the other application needed specifically version 1.6.&lt;/p&gt;
&lt;p&gt;Because the applications are installed on a Citrix server the users do not have write permissions to HKEY_LOCAL_MACHINE so that was another complication.&lt;/p&gt;
&lt;p&gt;After a lot of monitoring with process monitor the general process of how a particular Java version loads in Internet Explorer became clear to me.&lt;/p&gt;
&lt;p&gt;Java adds an addon to IE called ssv.dll, you can see this trough Tools | Manage Add-ons | Enable or Disable Add-ons:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://remkoweijnen.nl/blog/wp-content/uploads/2008/11/addons-3.webp" class="glightbox" data-type="image" data-gallery="post-135"&gt;&lt;img loading="lazy" decoding="async" src="https://remkoweijnen.nl/blog/wp-content/uploads/2008/11/addons-3-small.webp" alt="AddOns" width="450" height="81" /&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Prevent rename or removal of the My Documents icon on the desktop</title><link>https://remkoweijnen.nl/blog/2008/09/02/prevent-rename-or-removal-of-the-my-documents-icon-on-the-desktop/</link><pubDate>Tue, 02 Sep 2008 09:27:23 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/09/02/prevent-rename-or-removal-of-the-my-documents-icon-on-the-desktop/</guid><description>&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;EDIT:&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;Please read the &lt;/strong&gt;&lt;a href="https://remkoweijnen.nl/blog/2010/12/19/desktop-icons-hide-show-prevent-rename-or-delete/"&gt;&lt;strong&gt;Desktop Icons, hide, show, prevent rename or delete article&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, it may be a better solution!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of my customers recently asked if it was possible to preven the user from renaming or deleting the My Documents icon on the desktop.&lt;/p&gt;
&lt;p&gt;If you know that deleting the icon from the desktop doesn&amp;rsquo;t really delete the My Documents folder from disk but just hides the icon then it&amp;rsquo;s obvious that it must be some kind of registry setting.&lt;/p&gt;
&lt;p&gt;So I fired up Process Monitor from Sysinternals and deleted the icon. This showed that after deleting the icon changed registry keys at the following location:&lt;/p&gt;
&lt;p&gt;HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu\&lt;/p&gt;</description></item><item><title>Remko's download's</title><link>https://remkoweijnen.nl/blog/2008/08/20/remkos-downloads/</link><pubDate>Wed, 20 Aug 2008 10:56:04 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/08/20/remkos-downloads/</guid><description>&lt;p&gt;&lt;a class="download" href="https://remkoweijnen.nl/blog/files/ProfMan.zip"&gt;ProfMan.zip&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Configuring IBM Raid controller with Altiris</title><link>https://remkoweijnen.nl/blog/2008/06/17/configuring-ibm-raid-controller-with-altiris/</link><pubDate>Tue, 17 Jun 2008 21:41:58 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/06/17/configuring-ibm-raid-controller-with-altiris/</guid><description>&lt;p&gt;Today I was deploying some IBM x3550 and x3650 servers with Altiris Deployment Server. IBM Delivers a toolkit for Altiris that contains amongst others jobs for configuring raid arrays.&lt;/p&gt;
&lt;p&gt;To do this you need to create a raid policy file and deploy this. I created this policy file:&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;span class="codelang"&gt;text&lt;/span&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".txt" href="data:text/plain;charset=utf-8;base64,W1BvbGljeS5SQUlELTFdCgpBcHBsaWVzVG8uMSA9IHQ6U2VydmVSQUlELThrLWwsZDo0CgpBcnJheV9Nb2RlID0gQ1VTVE9NCkFycmF5LkEgPSAxLDIKQXJyYXkuQiA9IDMsNAoKTG9naWNhbF9Nb2RlID0gQ1VTVE9NCkxvZ2ljYWwuMSA9IEE6RklMTDoxCkxvZ2ljYWwuMiA9IEI6RklMTDox"&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Policy.RAID-1]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AppliesTo.1 = t:ServeRAID-8k-l,d:4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Array_Mode = CUSTOM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Array.A = 1,2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Array.B = 3,4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Logical_Mode = CUSTOM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Logical.1 = A:FILL:1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Logical.2 = B:FILL:1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;As you can see the policy only applies to the type of array controller in my servers (t:ServeRAID-8k-l). This way we prevent applying the policy to other configurarions. I have a 4 disk configuration (d:4) and want to create to RAID 1 arrays (A &amp;amp; B). On each array one Logical drive with the maximum size (FILL parameter).&lt;/p&gt;</description></item><item><title>Script to logoff all Terminal Server sessions</title><link>https://remkoweijnen.nl/blog/2008/06/09/script-to-logoff-all-terminal-server-sessions/</link><pubDate>Mon, 09 Jun 2008 13:48:50 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/06/09/script-to-logoff-all-terminal-server-sessions/</guid><description>&lt;p&gt;I needed a script to logoff all running Terminal Server sessions in order to rollout an install package. As you might know there is a commandline tool to logoff a session, it&amp;rsquo;s called logoff.exe.&lt;/p&gt;
&lt;p&gt;These are the commandline options:&lt;/p&gt;
&lt;p&gt;LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V]&lt;/p&gt;</description></item><item><title>Encrypting RDP Passwords in VB.NET</title><link>https://remkoweijnen.nl/blog/2008/05/02/encrypting-rdp-passwords-in-vbnet/</link><pubDate>Fri, 02 May 2008 08:53:13 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/05/02/encrypting-rdp-passwords-in-vbnet/</guid><description>&lt;p&gt;Justin Shepard converted my code to &lt;a href="https://remkoweijnen.nl/blog/2007/10/18/how-rdp-passwords-are-encrypted/"&gt;encrypt RPD passwords&lt;/a&gt; to VB.NET:&lt;/p&gt;
&lt;div class="codecard"&gt;
 &lt;div class="codehead"&gt;
 &lt;span class="codefile"&gt;&lt;span class="codelang"&gt;vbnet&lt;/span&gt;&lt;/span&gt;
 &lt;span class="codetools" data-pagefind-ignore&gt;
 &lt;button class="codebtn" type="button" data-copy&gt;Copy&lt;/button&gt;
 &lt;a class="codebtn" download=".vb" href="data:text/plain;charset=utf-8;base64,Jz09PT09PVNPRgoKSW1wb3J0cyBTeXN0ZW0KSW1wb3J0cyBTeXN0ZW0uVGV4dApJbXBvcnRzIFN5c3RlbS5SdW50aW1lLkludGVyb3BTZXJ2aWNlcwpJbXBvcnRzIFN5c3RlbS5Db21wb25lbnRNb2RlbApJbXBvcnRzIE1pY3Jvc29mdC5WaXN1YWxCYXNpYwoKUHVibGljIE1vZHVsZSBSZHBFbmNyeXB0CgogICAgUHVibGljIENsYXNzIERQQVBJCjxkbGxpbXBvcnQ&amp;#43;IF8KICAgICAgICBQcml2YXRlIFNoYXJlZCBGdW5jdGlvbiBDcnlwdFByb3RlY3REYXRhKCBfCiAgICAgICAgICAgIEJ5UmVmIHBQbGFpblRleHQgQXMgREFUQV9CTE9CLCBfCiAgICAgICAgICAgIEJ5VmFsIHN6RGVzY3JpcHRpb24gQXMgU3RyaW5nLCBfCiAgICAgICAgICAgIEJ5UmVmIHBFbnRyb3B5IEFzIERBVEFfQkxPQiwgXwogICAgICAgICAgICBCeVZhbCBwUmVzZXJ2ZWQgQXMgSW50UHRyLCBfCiAgICAgICAgICAgIEJ5UmVmIHBQcm9tcHQgQXMgQ1JZUFRQUk9URUNUX1BST01QVFNUUlVDVCwgXwogICAgICAgICAgICBCeVZhbCBkd0ZsYWdzIEFzIEludGVnZXIsIF8KICAgICAgICAgICAgQnlSZWYgcENpcGhlclRleHQgQXMgREFUQV9CTE9CIF8KICAgICAgICApIEFzIEJvb2xlYW4KICAgICAgICBFbmQgRnVuY3Rpb24KCjxkbGxpbXBvcnQ&amp;#43;IF8KICAgICAgICBQcml2YXRlIFNoYXJlZCBGdW5jdGlvbiBDcnlwdFVucHJvdGVjdERhdGEoIF8KICAgICAgICAgICAgQnlSZWYgcENpcGhlclRleHQgQXMgREFUQV9CTE9CLCBfCiAgICAgICAgICAgIEJ5UmVmIHBzekRlc2NyaXB0aW9uIEFzIFN0cmluZywgXwogICAgICAgICAgICBCeVJlZiBwRW50cm9weSBBcyBEQVRBX0JMT0IsIF8KICAgICAgICAgICAgQnlWYWwgcFJlc2VydmVkIEFzIEludFB0ciwgXwogICAgICAgICAgICBCeVJlZiBwUHJvbXB0IEFzIENSWVBUUFJPVEVDVF9QUk9NUFRTVFJVQ1QsIF8KICAgICAgICAgICAgQnlWYWwgZHdGbGFncyBBcyBJbnRlZ2VyLCBfCiAgICAgICAgICAgIEJ5UmVmIHBQbGFpblRleHQgQXMgREFUQV9CTE9CIF8KICAgICAgICApIEFzIEJvb2xlYW4KICAgICAgICBFbmQgRnVuY3Rpb24KCjxzdHJ1Y3RsYXlvdXQ&amp;#43;IF8KICAgICAgICBGcmllbmQgU3RydWN0dXJlIERBVEFfQkxPQgogICAgICAgICAgICBQdWJsaWMgY2JEYXRhIEFzIEludGVnZXIKICAgICAgICAgICAgUHVibGljIHBiRGF0YSBBcyBJbnRQdHIKICAgICAgICBFbmQgU3RydWN0dXJlCgo8c3RydWN0bGF5b3V0PiBfCiAgICAgICAgRnJpZW5kIFN0cnVjdHVyZSBDUllQVFBST1RFQ1RfUFJPTVBUU1RSVUNUCiAgICAgICAgICAgIFB1YmxpYyBjYlNpemUgQXMgSW50ZWdlcgogICAgICAgICAgICBQdWJsaWMgZHdQcm9tcHRGbGFncyBBcyBJbnRlZ2VyCiAgICAgICAgICAgIFB1YmxpYyBod25kQXBwIEFzIEludFB0cgogICAgICAgICAgICBQdWJsaWMgc3pQcm9tcHQgQXMgU3RyaW5nCiAgICAgICAgRW5kIFN0cnVjdHVyZQoKICAgICAgICBQcml2YXRlIENvbnN0IENSWVBUUFJPVEVDVF9VSV9GT1JCSURERU4gQXMgSW50ZWdlciA9IDEKICAgICAgICBQcml2YXRlIENvbnN0IENSWVBUUFJPVEVDVF9MT0NBTF9NQUNISU5FIEFzIEludGVnZXIgPSA0CgogICAgICAgIFByaXZhdGUgU2hhcmVkIFN1YiBJbml0UHJvbXB0IF8KICAgICAgICAoIF8KICAgICAgICAgICAgQnlSZWYgcHMgQXMgQ1JZUFRQUk9URUNUX1BST01QVFNUUlVDVCBfCiAgICAgICAgKQogICAgICAgICAgICBwcy5jYlNpemUgPSBNYXJzaGFsLlNpemVPZihHZXRUeXBlKENSWVBUUFJPVEVDVF9QUk9NUFRTVFJVQ1QpKQogICAgICAgICAgICBwcy5kd1Byb21wdEZsYWdzID0gMAogICAgICAgICAgICBwcy5od25kQXBwID0gSW50UHRyLlplcm8KICAgICAgICAgICAgcHMuc3pQcm9tcHQgPSBOb3RoaW5nCiAgICAgICAgRW5kIFN1YgoKICAgICAgICBQcml2YXRlIFNoYXJlZCBTdWIgSW5pdEJMT0IgXwogICAgICAgICggXwogICAgICAgICAgICBCeVZhbCBkYXRhIEFzIEJ5dGUoKSwgXwogICAgICAgICAgICBCeVJlZiBibG9iIEFzIERBVEFfQkxPQiBfCiAgICAgICAgKQogICAgICAgICAgICAnIFVzZSBlbXB0eSBhcnJheSBmb3IgbnVsbCBwYXJhbWV0ZXIuCiAgICAgICAgICAgIElmIGRhdGEgSXMgTm90aGluZyBUaGVuCiAgICAgICAgICAgICAgICBkYXRhID0gTmV3IEJ5dGUoMCkge30KICAgICAgICAgICAgRW5kIElmCgogICAgICAgICAgICAnIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIEJMT0IgZGF0YS4KICAgICAgICAgICAgYmxvYi5wYkRhdGEgPSBNYXJzaGFsLkFsbG9jSEdsb2JhbChkYXRhLkxlbmd0aCkKCiAgICAgICAgICAgICcgTWFrZSBzdXJlIHRoYXQgbWVtb3J5IGFsbG9jYXRpb24gd2FzIHN1Y2Nlc3NmdWwuCiAgICAgICAgICAgIElmIGJsb2IucGJEYXRhLkVxdWFscyhJbnRQdHIuWmVybykgVGhlbgogICAgICAgICAgICAgICAgVGhyb3cgTmV3IEV4Y2VwdGlvbiggXwogICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFsbG9jYXRlIGRhdGEgYnVmZmVyIGZvciBCTE9CIHN0cnVjdHVyZS4iKQogICAgICAgICAgICBFbmQgSWYKCiAgICAgICAgICAgICcgU3BlY2lmeSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIEJMT0IuCiAgICAgICAgICAgIGJsb2IuY2JEYXRhID0gZGF0YS5MZW5ndGgKICAgICAgICAgICAgTWFyc2hhbC5Db3B5KGRhdGEsIDAsIGJsb2IucGJEYXRhLCBkYXRhLkxlbmd0aCkKICAgICAgICBFbmQgU3ViCgogICAgICAgIFB1YmxpYyBFbnVtIEtleVR5cGUKICAgICAgICAgICAgVXNlcktleSA9IDEKICAgICAgICAgICAgTWFjaGluZUtleQogICAgICAgIEVuZCBFbnVtCgogICAgICAgIFByaXZhdGUgU2hhcmVkIGRlZmF1bHRLZXlUeXBlIEFzIEtleVR5cGUgPSBLZXlUeXBlLlVzZXJLZXkKCiAgICAgICAgUHVibGljIFNoYXJlZCBGdW5jdGlvbiBFbmNyeXB0IF8KICAgICAgICAoIF8KICAgICAgICAgICAgQnlWYWwga2V5VHlwZSBBcyBLZXlUeXBlLCBfCiAgICAgICAgICAgIEJ5VmFsIHBsYWluVGV4dCBBcyBTdHJpbmcsIF8KICAgICAgICAgICAgQnlWYWwgZW50cm9weSBBcyBTdHJpbmcsIF8KICAgICAgICAgICAgQnlWYWwgZGVzY3JpcHRpb24gQXMgU3RyaW5nIF8KICAgICAgICApIEFzIFN0cmluZwogICAgICAgICAgICBJZiBwbGFpblRleHQgSXMgTm90aGluZyBUaGVuCiAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBTdHJpbmcuRW1wdHkKICAgICAgICAgICAgRW5kIElmCiAgICAgICAgICAgIElmIGVudHJvcHkgSXMgTm90aGluZyBUaGVuCiAgICAgICAgICAgICAgICBlbnRyb3B5ID0gU3RyaW5nLkVtcHR5CiAgICAgICAgICAgIEVuZCBJZgoKICAgICAgICAgICAgRGltIHJlc3VsdCBBcyBCeXRlKCkKICAgICAgICAgICAgRGltIGVuY3J5cHRlZCBBcyBTdHJpbmcgPSAiIgogICAgICAgICAgICBEaW0gaSBBcyBJbnRlZ2VyCiAgICAgICAgICAgIHJlc3VsdCA9IEVuY3J5cHQoa2V5VHlwZSwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kaW5nLlVuaWNvZGUuR2V0Qnl0ZXMocGxhaW5UZXh0KSwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kaW5nLlVuaWNvZGUuR2V0Qnl0ZXMoZW50cm9weSksIF8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbikKICAgICAgICAgICAgRm9yIGkgPSAwIFRvIHJlc3VsdC5MZW5ndGggLSAxCiAgICAgICAgICAgICAgICBlbmNyeXB0ZWQgPSBlbmNyeXB0ZWQgJiBDb252ZXJ0LlRvU3RyaW5nKHJlc3VsdChpKSwgMTYpLlBhZExlZnQoMiwgIjAiKS5Ub1VwcGVyKCkKICAgICAgICAgICAgTmV4dAogICAgICAgICAgICBSZXR1cm4gZW5jcnlwdGVkLlRvU3RyaW5nKCkKICAgICAgICBFbmQgRnVuY3Rpb24KCiAgICAgICAgUHVibGljIFNoYXJlZCBGdW5jdGlvbiBFbmNyeXB0IF8KICAgICAgICAoIF8KICAgICAgICAgICAgQnlWYWwga2V5VHlwZSBBcyBLZXlUeXBlLCBfCiAgICAgICAgICAgIEJ5VmFsIHBsYWluVGV4dEJ5dGVzIEFzIEJ5dGUoKSwgXwogICAgICAgICAgICBCeVZhbCBlbnRyb3B5Qnl0ZXMgQXMgQnl0ZSgpLCBfCiAgICAgICAgICAgIEJ5VmFsIGRlc2NyaXB0aW9uIEFzIFN0cmluZyBfCiAgICAgICAgKSBBcyBCeXRlKCkKICAgICAgICAgICAgSWYgcGxhaW5UZXh0Qnl0ZXMgSXMgTm90aGluZyBUaGVuCiAgICAgICAgICAgICAgICBwbGFpblRleHRCeXRlcyA9IE5ldyBCeXRlKDApIHt9CiAgICAgICAgICAgIEVuZCBJZgoKICAgICAgICAgICAgSWYgZW50cm9weUJ5dGVzIElzIE5vdGhpbmcgVGhlbgogICAgICAgICAgICAgICAgZW50cm9weUJ5dGVzID0gTmV3IEJ5dGUoMCkge30KICAgICAgICAgICAgRW5kIElmCgogICAgICAgICAgICBJZiBkZXNjcmlwdGlvbiBJcyBOb3RoaW5nIFRoZW4KICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gU3RyaW5nLkVtcHR5CiAgICAgICAgICAgIEVuZCBJZgoKICAgICAgICAgICAgRGltIHBsYWluVGV4dEJsb2IgQXMgREFUQV9CTE9CID0gTmV3IERBVEFfQkxPQgogICAgICAgICAgICBEaW0gY2lwaGVyVGV4dEJsb2IgQXMgREFUQV9CTE9CID0gTmV3IERBVEFfQkxPQgogICAgICAgICAgICBEaW0gZW50cm9weUJsb2IgQXMgREFUQV9CTE9CID0gTmV3IERBVEFfQkxPQgoKICAgICAgICAgICAgRGltIHByb21wdCBBcyAgXwogICAgICAgICAgICAgICAgICAgIENSWVBUUFJPVEVDVF9QUk9NUFRTVFJVQ1QgPSBOZXcgQ1JZUFRQUk9URUNUX1BST01QVFNUUlVDVAogICAgICAgICAgICBJbml0UHJvbXB0KHByb21wdCkKCiAgICAgICAgICAgIFRyeQogICAgICAgICAgICAgICAgVHJ5CiAgICAgICAgICAgICAgICAgICAgSW5pdEJMT0IocGxhaW5UZXh0Qnl0ZXMsIHBsYWluVGV4dEJsb2IpCiAgICAgICAgICAgICAgICBDYXRjaCBleCBBcyBFeGNlcHRpb24KICAgICAgICAgICAgICAgICAgICBUaHJvdyBOZXcgRXhjZXB0aW9uKCJDYW5ub3QgaW5pdGlhbGl6ZSBwbGFpbnRleHQgQkxPQi4iLCBleCkKICAgICAgICAgICAgICAgIEVuZCBUcnkKCiAgICAgICAgICAgICAgICBUcnkKICAgICAgICAgICAgICAgICAgICBJbml0QkxPQihlbnRyb3B5Qnl0ZXMsIGVudHJvcHlCbG9iKQogICAgICAgICAgICAgICAgQ2F0Y2ggZXggQXMgRXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgVGhyb3cgTmV3IEV4Y2VwdGlvbigiQ2Fubm90IGluaXRpYWxpemUgZW50cm9weSBCTE9CLiIsIGV4KQogICAgICAgICAgICAgICAgRW5kIFRyeQoKICAgICAgICAgICAgICAgIERpbSBmbGFncyBBcyBJbnRlZ2VyID0gQ1JZUFRQUk9URUNUX1VJX0ZPUkJJRERFTgoKICAgICAgICAgICAgICAgIElmIGtleVR5cGUgPSBrZXlUeXBlLk1hY2hpbmVLZXkgVGhlbgogICAgICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgT3IgKENSWVBUUFJPVEVDVF9MT0NBTF9NQUNISU5FKQogICAgICAgICAgICAgICAgRW5kIElmCgogICAgICAgICAgICAgICAgRGltIHN1Y2Nlc3MgQXMgQm9vbGVhbiA9IENyeXB0UHJvdGVjdERhdGEoIF8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0QmxvYiwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyb3B5QmxvYiwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQdHIuWmVybywgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQsIF8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsIF8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lwaGVyVGV4dEJsb2IpCgogICAgICAgICAgICAgICAgSWYgTm90IHN1Y2Nlc3MgVGhlbgogICAgICAgICAgICAgICAgICAgIERpbSBlcnJDb2RlIEFzIEludGVnZXIgPSBNYXJzaGFsLkdldExhc3RXaW4zMkVycm9yKCkKCiAgICAgICAgICAgICAgICAgICAgVGhyb3cgTmV3IEV4Y2VwdGlvbigiQ3J5cHRQcm90ZWN0RGF0YSBmYWlsZWQuIiwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgV2luMzJFeGNlcHRpb24oZXJyQ29kZSkpCiAgICAgICAgICAgICAgICBFbmQgSWYKCiAgICAgICAgICAgICAgICBEaW0gY2lwaGVyVGV4dEJ5dGVzKGNpcGhlclRleHRCbG9iLmNiRGF0YSkgQXMgQnl0ZQoKICAgICAgICAgICAgICAgIE1hcnNoYWwuQ29weShjaXBoZXJUZXh0QmxvYi5wYkRhdGEsIGNpcGhlclRleHRCeXRlcywgMCwgXwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlclRleHRCbG9iLmNiRGF0YSkKCiAgICAgICAgICAgICAgICBSZXR1cm4gY2lwaGVyVGV4dEJ5dGVzCiAgICAgICAgICAgIENhdGNoIGV4IEFzIEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgVGhyb3cgTmV3IEV4Y2VwdGlvbigiRFBBUEkgd2FzIHVuYWJsZSB0byBlbmNyeXB0IGRhdGEuIiwgZXgpCiAgICAgICAgICAgIEZpbmFsbHkKICAgICAgICAgICAgICAgIElmIE5vdCAocGxhaW5UZXh0QmxvYi5wYkRhdGEuRXF1YWxzKEludFB0ci5aZXJvKSkgVGhlbgogICAgICAgICAgICAgICAgICAgIE1hcnNoYWwuRnJlZUhHbG9iYWwocGxhaW5UZXh0QmxvYi5wYkRhdGEpCiAgICAgICAgICAgICAgICBFbmQgSWYKCiAgICAgICAgICAgICAgICBJZiBOb3QgKGNpcGhlclRleHRCbG9iLnBiRGF0YS5FcXVhbHMoSW50UHRyLlplcm8pKSBUaGVuCiAgICAgICAgICAgICAgICAgICAgTWFyc2hhbC5GcmVlSEdsb2JhbChjaXBoZXJUZXh0QmxvYi5wYkRhdGEpCiAgICAgICAgICAgICAgICBFbmQgSWYKCiAgICAgICAgICAgICAgICBJZiBOb3QgKGVudHJvcHlCbG9iLnBiRGF0YS5FcXVhbHMoSW50UHRyLlplcm8pKSBUaGVuCiAgICAgICAgICAgICAgICAgICAgTWFyc2hhbC5GcmVlSEdsb2JhbChlbnRyb3B5QmxvYi5wYkRhdGEpCiAgICAgICAgICAgICAgICBFbmQgSWYKICAgICAgICAgICAgRW5kIFRyeQogICAgICAgIEVuZCBGdW5jdGlvbgoKICAgIEVuZCBDbGFzcwoKICAgIFN1YiBNYWluKEJ5VmFsIGFyZ3MgQXMgU3RyaW5nKCkpCiAgICAgICAgVHJ5CiAgICAgICAgICAgIERpbSB0ZXh0IEFzIFN0cmluZyA9IGFyZ3MoMCkKICAgICAgICAgICAgRGltIGVuY3J5cHRlZCBBcyBTdHJpbmcKCiAgICAgICAgICAgIGVuY3J5cHRlZCA9IERQQVBJLkVuY3J5cHQoRFBBUEkuS2V5VHlwZS5NYWNoaW5lS2V5LCB0ZXh0LCBOb3RoaW5nLCAicHN3IikKCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJ7MH0iICYgQ2hyKDEzKSAmIENocigxMCksIGVuY3J5cHRlZCkKCiAgICAgICAgQ2F0Y2ggZXggQXMgRXhjZXB0aW9uCiAgICAgICAgICAgIFdoaWxlIE5vdCAoZXggSXMgTm90aGluZykKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGV4Lk1lc3NhZ2UpCiAgICAgICAgICAgICAgICBleCA9IGV4LklubmVyRXhjZXB0aW9uCiAgICAgICAgICAgIEVuZCBXaGlsZQogICAgICAgIEVuZCBUcnkKICAgIEVuZCBTdWIKCkVuZCBNb2R1bGUKJz09PT09PUVPRg=="&gt;Download&lt;/a&gt;
 &lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="codebody"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-vbnet" data-lang="vbnet"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;#39;======SOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;System.Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;System.Runtime.InteropServices&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;System.ComponentModel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.VisualBasic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="k"&gt;Module&lt;/span&gt; &lt;span class="nn"&gt;RdpEncrypt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="k"&gt;Class&lt;/span&gt; &lt;span class="nc"&gt;DPAPI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;&amp;lt;dllimport&amp;gt;&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt; &lt;span class="nf"&gt;CryptProtectData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pPlainText&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;szDescription&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pEntropy&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;pReserved&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pPrompt&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;dwFlags&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pCipherText&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Boolean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;&amp;lt;dllimport&amp;gt;&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt; &lt;span class="nf"&gt;CryptUnprotectData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pCipherText&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pszDescription&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pEntropy&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;pReserved&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pPrompt&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;dwFlags&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;pPlainText&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Boolean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;&amp;lt;structlayout&amp;gt;&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Friend&lt;/span&gt; &lt;span class="k"&gt;Structure&lt;/span&gt; &lt;span class="nc"&gt;DATA_BLOB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="n"&gt;cbData&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="n"&gt;pbData&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Structure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;&amp;lt;structlayout&amp;gt;&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Friend&lt;/span&gt; &lt;span class="k"&gt;Structure&lt;/span&gt; &lt;span class="nc"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="n"&gt;cbSize&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="n"&gt;dwPromptFlags&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="n"&gt;hwndApp&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="n"&gt;szPrompt&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Structure&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Const&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_UI_FORBIDDEN&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Const&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_LOCAL_MACHINE&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt; &lt;span class="nf"&gt;InitPrompt&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;ps&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cbSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SizeOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;GetType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dwPromptFlags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hwndApp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;szPrompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt; &lt;span class="nf"&gt;InitBLOB&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByRef&lt;/span&gt; &lt;span class="n"&gt;blob&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;#39; Use empty array for null parameter.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;#39; Allocate memory for the BLOB data.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AllocHGlobal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;#39; Make sure that memory allocation was successful.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Equals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Throw&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;Unable to allocate data buffer for BLOB structure.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;#39; Specify number of bytes in the BLOB.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cbData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="k"&gt;Enum&lt;/span&gt; &lt;span class="nc"&gt;KeyType&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;UserKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MachineKey&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Enum&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Private&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="n"&gt;defaultKeyType&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;KeyType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;KeyType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UserKey&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt; &lt;span class="nf"&gt;Encrypt&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;keyType&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;KeyType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;plainText&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;entropy&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;plainText&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plainText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Empty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;entropy&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;entropy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Empty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keyType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Unicode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plainText&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Unicode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entropy&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;For&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt; &lt;span class="k"&gt;To&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;16&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;PadLeft&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;ToUpper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Public&lt;/span&gt; &lt;span class="k"&gt;Shared&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt; &lt;span class="nf"&gt;Encrypt&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;keyType&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;KeyType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;plainTextBytes&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;entropyBytes&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;plainTextBytes&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plainTextBytes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;entropyBytes&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;entropyBytes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Empty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;plainTextBlob&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;cipherTextBlob&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;entropyBlob&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;DATA_BLOB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_PROMPTSTRUCT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;InitPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;InitBLOB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plainTextBytes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plainTextBlob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Throw&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Cannot initialize plaintext BLOB.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;InitBLOB&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entropyBytes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;entropyBlob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Throw&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Cannot initialize entropy BLOB.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;flags&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CRYPTPROTECT_UI_FORBIDDEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;keyType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keyType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MachineKey&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;flags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;flags&lt;/span&gt; &lt;span class="ow"&gt;Or&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CRYPTPROTECT_LOCAL_MACHINE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;success&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Boolean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CryptProtectData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;plainTextBlob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;entropyBlob&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;flags&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cipherTextBlob&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="k"&gt;Not&lt;/span&gt; &lt;span class="n"&gt;success&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;errCode&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetLastWin32Error&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Throw&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;CryptProtectData failed.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;Win32Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;errCode&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;cipherTextBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cipherTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cbData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cipherTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cipherTextBytes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; _
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cipherTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cbData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Return&lt;/span&gt; &lt;span class="n"&gt;cipherTextBytes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Throw&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;DPAPI was unable to encrypt data.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Finally&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="k"&gt;Not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plainTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Equals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FreeHGlobal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;plainTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="k"&gt;Not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cipherTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Equals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FreeHGlobal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cipherTextBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="k"&gt;Not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entropyBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Equals&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IntPtr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Zero&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FreeHGlobal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entropyBlob&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pbData&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Class&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Sub&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ByVal&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;String&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DPAPI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DPAPI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;KeyType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MachineKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;psw&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{0}&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;Chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;13&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;Chr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;encrypted&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;While&lt;/span&gt; &lt;span class="k"&gt;Not&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;Is&lt;/span&gt; &lt;span class="k"&gt;Nothing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;InnerException&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;While&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Module&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;======&lt;/span&gt;&lt;span class="n"&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;section class="comments"&gt;
&lt;h2&gt;2 Comments&lt;/h2&gt;
&lt;ol class="comment-list"&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;&lt;a href="http://Decript" rel="nofollow ugc"&gt;James&lt;/a&gt;&lt;/span&gt; &lt;time datetime="2010-07-05"&gt;Jul 5, 2010&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;Hi friends, anyone know where I can find the code to decrypt in vb.net? Thanks for your help&lt;/p&gt;</description></item><item><title>New home for Jedi Apilib and Jedi Security Library</title><link>https://remkoweijnen.nl/blog/2008/03/03/new-home-for-jedi-apilib-and-jedi-security-library/</link><pubDate>Mon, 03 Mar 2008 15:38:34 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/03/03/new-home-for-jedi-apilib-and-jedi-security-library/</guid><description>&lt;p&gt;A new website (blog) was opened for the Jedi Apilib and Jedi Security Library. I invite you all to take a look!&lt;/p&gt;
&lt;p&gt;You can find it &lt;a href="http://blog.delphi-jedi.net/2008/03/02/welcome/"&gt;here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Softpedia</title><link>https://remkoweijnen.nl/blog/2008/01/25/softpedia/</link><pubDate>Fri, 25 Jan 2008 20:22:25 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2008/01/25/softpedia/</guid><description>&lt;p&gt;Today I received an e-mail from Softpedia telling me that they have &lt;a target="_blank" href="http://www.softpedia.com/get/Internet/Remote-Utils/Launch-RDP.shtml"&gt;listed&lt;/a&gt; one of my commandline tools, LaunchRDP. I don&amp;rsquo;t know how they found or why they think that it should be listed, but it&amp;rsquo;s nice to see that they respect the author and informed me. If you want to rate it, &lt;a target="_blank" href="http://www.softpedia.com/get/Internet/Remote-Utils/Launch-RDP.shtml"&gt;here&amp;rsquo;s&lt;/a&gt; your chance!&lt;/p&gt;</description></item><item><title>IDA 4.9 released as freeware</title><link>https://remkoweijnen.nl/blog/2007/12/09/ida-49-released-as-freeware/</link><pubDate>Sun, 09 Dec 2007 10:49:16 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/12/09/ida-49-released-as-freeware/</guid><description>&lt;p&gt;Datarescue has release IDA 4.9 as freeware. IDA Pro is the de-facto standard for the analysis of hostile code, vulnerability research and reverse engineering in general. You can find IDA freeware here: &lt;a href="http://www.datarescue.com/idabase/idadownfreeware.htm"&gt;&lt;a href="http://www.datarescue.com/idabase/idadownfreeware.htm"&gt;http://www.datarescue.com/idabase/idadownfreeware.htm&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;section class="comments"&gt;
&lt;h2&gt;1 Comments&lt;/h2&gt;
&lt;ol class="comment-list"&gt;
&lt;li class="comment depth-0"&gt;&lt;div class="comment-meta"&gt;&lt;span class="comment-author"&gt;&lt;a href="http://" rel="nofollow ugc"&gt;Remko&lt;/a&gt;&lt;/span&gt; &lt;time datetime="2007-12-19"&gt;Dec 19, 2007&lt;/time&gt;&lt;/div&gt;&lt;div class="comment-body"&gt;&lt;p&gt;Assarbad has setup a mirror to the freeware version of IDA on the idapalace site. You can find it here: http://old.idapalace.net/news.html&lt;/p&gt;</description></item><item><title>Even more undocumented Terminal Server API's uncovered</title><link>https://remkoweijnen.nl/blog/2007/11/21/even-more-undocumented-terminal-server-apis-uncovered/</link><pubDate>Wed, 21 Nov 2007 18:18:37 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/21/even-more-undocumented-terminal-server-apis-uncovered/</guid><description>&lt;p&gt;I was contact by Danila Galimov a while ago because he was working with my JwaWinsta unit. Together we were able (and are still working on) uncovering more of the undocumented API&amp;rsquo;s in winsta.dll.&lt;/p&gt;
&lt;p&gt; We found several new classes for WinStationQueryInformationW that return lots of information:&lt;/p&gt;</description></item><item><title>Multiple Terminal Sessions in Windows Vista</title><link>https://remkoweijnen.nl/blog/2007/11/21/multiple-terminal-session-in-windows-vista/</link><pubDate>Wed, 21 Nov 2007 18:09:47 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/21/multiple-terminal-session-in-windows-vista/</guid><description>&lt;p&gt;There were 2 ways (known to me) of extending Windows XP to offer mulitple concurrent Terminal Sessions. One with the RC1 version of XP SP2 and one that patches Winlogon and Termsrv.dll. The latter offers not only multiple sessions but also multiple sessions under the same account and sessions to the local machine.&lt;/p&gt;</description></item><item><title>Post Views</title><link>https://remkoweijnen.nl/blog/2007/11/02/post-views/</link><pubDate>Fri, 02 Nov 2007 21:18:28 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/02/post-views/</guid><description>&lt;p&gt;I was curious how many times my posts are viewed. So I installed &lt;a target="_blank" href="http://lesterchan.net/wordpress/readme/wp-pluginsused.html"&gt;this&lt;/a&gt; plugin which was made by Lester &amp;lsquo;GaMerZ&amp;rsquo; Chan. If you use Wordpress take a look at his other &lt;a target="_blank" href="http://lesterchan.net/wordpress/category/plugins/"&gt;plugins&lt;/a&gt;, there are some good ones there!&lt;/p&gt;</description></item><item><title>Google adds IMAP support to GMail</title><link>https://remkoweijnen.nl/blog/2007/11/01/google-adds-imap-support-to-gmail/</link><pubDate>Thu, 01 Nov 2007 15:53:58 +0000</pubDate><guid>https://remkoweijnen.nl/blog/2007/11/01/google-adds-imap-support-to-gmail/</guid><description>&lt;p&gt;Google has added &lt;a rel="external" target="_blank" href="http://en.wikipedia.org/wiki/Imap" title="Wikipedia.org -- Internet Message Access Protocol"&gt;imap&lt;/a&gt; support to GMail. This means you can use an e-mail client like Outlook (Express) to read your mail but you don&amp;rsquo;t have to download and store them locally. Read more &lt;a rel="external" target="_blank" href="http://mail.google.com/support/bin/answer.py?ctx=gmail&amp;amp;hl=en&amp;amp;answer=75725"&gt;here&lt;/a&gt;. The Storage Limit has been raised to 4 GB (at time of writing 4569 MB)&lt;/p&gt;</description></item></channel></rss>