17th September 2007, 11:08 am
I know I’ve been posting a lot of KiXtart stuff lately, and I don’t mean to have my blog become all about KiXtart but it seems to be a pretty popular topic. I’ve been watching my web stats and have seen a few users come by from searches looking for how to open a browser from KiXtart so I thought I’d post the answer.
Here’s a function to open the default web browser. An optional URL can be specified and it will be opened in the browser.
; Open the default browser
FUNCTION OpenDefaultBrowser (OPTIONAL $URL)
; Get the command line to start the default browser
$BrowserCommand = READVALUE ("HKEY_CLASSES_ROOT\HTTP\shell\open\command", "")
; Check if there is a %1 in the command
IF INSTR ($BrowserCommand, "%1")
; Replace any occurences of %1 with the URL
$BrowserCommand = JOIN (SPLIT ($BrowserCommand, "%1"), $URL)
ELSE
; Append the URL to the end of the command
$BrowserCommand = "$BrowserCommand $URL"
ENDIF
; If no URL was specified, remove " -nohome" from the command line
IF NOT $URL
$BrowserCommand = JOIN (SPLIT ($BrowserCommand, " -nohome"), "")
ENDIF
; Open the default browser and return immediately
RUN $BrowserCommand
ENDFUNCTION
With the above function, if Firefox or Opera or some other browser is installed and set as the default, it will be opened instead of Internet Explorer. If you need to be sure that Internet Explorer is opened, and not some other browser, here’s a function that will open Internet Explorer no matter what.
; Open Internet Explorer
FUNCTION OpenInternetExplorer (OPTIONAL $URL)
; Get the path to Internet Explorer
$BrowserCommand = READVALUE ("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE", "")
; Append the URL to the end of the command
$BrowserCommand = "$BrowserCommand $URL"
; Open Internet Explorer and return immediately
RUN $BrowserCommand
ENDFUNCTION
Here are some examples for using these functions:
; Open the default browser and go to the home page
OpenDefaultBrowser
; Open the default browser and go to http://blog.glyff.net/
OpenDefaultBrowser ("http://blog.glyff.net/")
; Open Internet Explorer and go to the home page, even if it isn't the default browser
OpenInternetExplorer
; Open Internet Explorer and go to http://blog.glyff.net/, even if it isn't the default browser
OpenInternetExplorer ("http://blog.glyff.net/")
12th September 2007, 05:26 pm
As you may have noticed, I have posted some bits of KiXtart code here on my blog and the code is prettied up to be easy to read similar to an IDE.
To do this, I use a plugin for WordPress called WP-Syntax. WP-Syntax is a wrapper around a library called GeSHi that performs syntax highlighting for programming and scripting languages.
By default GeSHi supports dozens of programming languages (see their site for a full list) but it doesn’t support KiXtart. So, I wrote a custom language file for GeSHi to add support for KiXtart.
Download: geshi-kixtart.zip (ZIP - 2.61 KB)
After installing WP-Syntax, just extract kixtart.php from the above ZIP file and copy it to the /wp-content/plugins/wp-syntax/geshi/geshi directory on your WordPress server.
To include KiXtart code in a post, surround your code with <pre lang=”kixtart”> and </pre> tags.
I have submitted this language file to the GeSHi developers so hopefully it should be added as a standard language in upcoming versions of GeSHi and WP-Syntax.
11th September 2007, 05:33 pm
At Ergotron, we have a browser based, third party application that works best when the server is added to the Trusted Sites Zone in Internet Explorer. In a perfect world, we could bug the developers to make it run correctly on the principle of least privilege, but that’s not likely to happen.

So, I added code to our log on script, which is written in KiXtart, to add the servers for this application to the Trusted Sites Zone.
Here’s the main function:
; Add a site to the Trusted Sites Zone
FUNCTION AddTrustedSite ($Protocol, $Server, $Domain)
$DomainsKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains"
$SiteKey = '$DomainsKey\$Domain\$Server\'
$SiteValue = $Protocol
$TrustedSitesZone = 2
$Result = WRITEVALUE ($SiteKey, $SiteValue, $TrustedSitesZone, "REG_DWORD")
ENDFUNCTION
I also wanted a way to remove sites from the Trusted Sites Zone as well:
; Delete a site from the Trusted Sites Zone
FUNCTION DeleteTrustedSite ($Protocol, $Server, $Domain)
$DomainsKey = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains"
$SiteKey = '$DomainsKey\$Domain\$Server\'
$SiteValue = $Protocol
$Result = DELVALUE ($SiteKey, $SiteValue)
ENDFUNCTION
Now, to use these functions:
; Add buggy application to the Trusted Sites Zone
AddTrustedSite ("http", "buggyapp", "example.com")
; Remove fixed application from the Trusted Sites Zone
DeleteTrustedSite ("http", "fixedapp", "example.com")
The value passed to $Protocol can be “http”, “https”, “file”, “ftp” or “*”. If “*” is used, the site will be trusted when it is accessed using any protocol. If anything other than “https” is specified, you must disable the “Require server verification (https) for sites in this zone” option.
This is how to disable the “Require server verification (https) for sites in this zone” option:
; Do not require https for sites in the Trusted Sites zone
$TrustedSitesFlags = VAL (READVALUE ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\", "Flags"))
$TrustedSitesFlags = $TrustedSitesFlags | 4
$Result = WRITEVALUE ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2\", "Flags", $TrustedSitesFlags, "REG_DWORD")
31st August 2007, 02:50 pm
KiXtart is an easy to use scripting language that is ideal for logon scripts. I use KiXtart for the logon script at Ergotron to map network drives and printers, adjust system settings, remove unwanted programs, install standard software and more. Over the last few years, the script has grown to over 1,800 lines but still runs quickly and is fairly easy to maintain.
Periodically, I’ll post about common logon and administrative tasks that I’ve found KiXtart useful for.
Here’s an example of a simple use of KiXtart to map different network drives for different groups of users.
1
2
3
4
5
6
7
| ; Everyone gets a drive mapped to the "Company Documents" share
USE "X:" "\\SERVER\Company Documents"
; Only users in the "Finance" group get a drive mapped to the "Finance" share
IF INGROUP ("Finance")
USE "Y:" "\\SERVER\Finance"
ENDIF |