Dwarfsoft [GPA]

Back in the gtd-php saddle

by on Sep.06, 2011, under Uncategorized


Print This Post Print This Post

I’ve started having a look back at some of my gtd-php project ideas and made some progress since the last time I looked at them. Turns out that one of the bugs I was experiencing was a result of a funny session issue (by running a dev and prod instance from the same browser).

I’ll need to look into it further but it does appear that at least some of my ideas can be implemented as part of the standard addon scheme.

Cheers, Chris.

Leave a Comment :, , , , , more...

SEP11 Scan Logs

by on Mar.03, 2011, under Scripting, Tweet, Work


Print This Post Print This Post

I will start out by simply stating how much I HATE SEP11, and how it handles client scan logs. For some reason there is NO way of getting a client scan log out of the Central Management Console. The whole point of Central Management is being able to … manage CENTRALLY.

Anyway, enough rant. I wrote a batch file to pull the latest (or specified) log file from a list of servers (in a file called Servers.txt). More Source:
(continue reading…)

Leave a Comment :, , , , , , , more...

VBScript INI File Handler

by on Nov.23, 2010, under Uncategorized


Print This Post Print This Post

As you may know, I posted a while ago about how to handle INI files using VBScript if you can’t use the Word.Application object System.PrivateProfileString function.

Over at CodeProject there has been a more recent submission which includes a VB.Net, C# and VBScript solution that is a little more elegant than mine. It uses Regular Expressions to parse the INI File (which I would use now if I had been building it now), but still utilises the Scripting.Dictionary object for organising sections, keys and values.

Enjoy,


(continue reading…)

Leave a Comment :, , more...

MSI Package Code Fun

by on Jun.22, 2010, under Uncategorized


Print This Post Print This Post

I have recently been building quite a few MSI packages, and as of the end of last week I was required to go back through and rebuild a whole batch of them. Due to the way a lot of deployments work from Novell Zenworks, Product Codes are used quite frequently to stop the MSI from installing more than once (thereby disabling multiple installs). I believe that this is due to the MSI Template that is used corporately having a few Dialogs missing for Repair/Modify. Therefore when the second install occurs the MSI dies a painful death and the user is presented with a number of errors.

So, rather than fix the source of the problem I work within the structure I am given. After my forays in the past couple of days I found it immensely frustrating trying to get the Product Code key to update our documentation for each MSI which had been rebuilt. This is because, up until now, I had been installing the MSI and searching for the MSI name under HKEY_CLASSES_ROOT\Installer\Product\. The code displayed under this key had confused me for quite some time until I found some information regarding a “Packed GUID“.


(continue reading…)

3 Comments more...

Group Policy Editing – Findings

by on Jun.15, 2010, under Novell, Scripting, Tweet


Print This Post Print This Post

I had started another post on Group Policy editing, and how the Policy files are structured, and how to use and improve on the existing Group Policy Editor tool. The post has been found to be far too epic, so I have decided to cover a smaller subset of recent finds.

As everybody is probably already aware, we use Novell ConsoleOne and Zenworks where I work. ConsoleOne has some interesting features that require that whenever a Group Policy is being edited it takes over as the policy on the machine that is editing it. Rather than have a useful tool like Microsofts Group Policy Management Console, Novell likes to replace the local Group Policy and then just run gpedit.msc. Which is where my first gripe about gpedit.msc comes in:

GPEdit.msc requires line by line entry of things like, for example, port exceptions and program exceptions for the Windows Firewall. This is usually not an issue except that, as I have discussed in previous posts, we have been moving towards a Windows Domain environment. Firewall Exception rules are configured within two places in Group Policy: Domain Profile and Standard Profile. I have found that there is a need to move our current Standard Profile settings across to the Domain Profile settings. After a bit of registry searching I found a neat trick for doing exactly that.


(continue reading…)

Leave a Comment :, , , , , , , , more...

SYSTEM Account Permissions

by on May.25, 2010, under Novell, Scripting, Tweet, Work


Print This Post Print This Post

Recently I have been working on some rather complicated projects preparing our SOE to move from Novell eDirectory to an Active Directory environment. One of the packages I built was required to run periodically and so I set up a Scheduled Task to accomplish this. Rather than introduce a security risk by creating a new Administrator Account I just created the scheduled task to run as the local SYSTEM account. It turns out that the SYSTEM account does not have as much access as I required, especially when managing user registry hives.

After quite some time looking in to how to achieve my goal I came up with a rather simple, yet ultimately hacky, solution. Give the SYSTEM Account Administrative Privileges.


(continue reading…)

2 Comments :, , , , , , , more...

Last Login Time

by on Apr.22, 2010, under Scripting, Tweet, Work


Print This Post Print This Post

I have recently been having a look into determining the Last Login Time of a user for a BGInfo implementation. Firstly I had a look at the getCurrentUserLastLoginTime script suggested for use with BGInfo. The limitation of this script, however, is that it will reset the login time to the last time the Windows login box was Authenticated against, which also includes the time that the workstation was unlocked.

In order to maintain current BGInfo information the implementation is running periodically, so this is unnacceptable. Therefore I had to work to resolve the issue manually. As I have had a fair bit of experience with Windows Profiles recently (see the last blog post) I was familiar with the ProfileLoadTimeHigh and ProfileLoadTimeLow registry keys in the ProfileList. So I set out to determine how to actually use these to determine the login time. I first wrote some code to get the User SID based on the users “%userdomain%” and “%username%”:


(continue reading…)

Leave a Comment :, , , , , more...

Shared User Profiles – Staging Scripts

by on Mar.15, 2010, under Novell, Scripting, Tweet, Work


Print This Post Print This Post

As promised, here are the scripts required for the Pre-staging of Domain User Profiles on the local machine. The first thing we need to do is Enumerate all the Local User Accounts.

Function StageAllUsers(DomainFQDN, strDomain)
   ' Enumerate all users that are Local and not built in accounts.
   strComputer = "."
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
   'Enumerate users where the User Domain is the Local Machine
   Set colItems = objWMIService.ExecQuery _
                  ("Select * from Win32_UserAccount " & _
                   "Where Domain = '" & GetComputerName & "' " & _
                   "And Disabled = FALSE And Name <> 'Administrator'")
   ' Stage each user
   For Each objItem In colItems
      ' Ensure the account actually has a profile (otherwise we can ignore it)
      If GetLocalUserProfile(objItem.Name) <> "" Then
         ret = StageUser(objItem.Name, DomainFQDN, strDomain)
      End If
   Next
End Function

The functions called here are GetComputerName, which returns the name of the local machine, and the other important ones are GetLocalUserProfile and Stage User. The first we can check is GetLocalUserProfile.
(continue reading…)

9 Comments :, , , , , , , , , , more...

Shared User Profiles – Alternative to Migration

by on Mar.12, 2010, under Novell, Scripting, Tweet, Work


Print This Post Print This Post

Well, I have been very slack in that I haven’t updated with my Group Policy investigations or the eDirectory VBScript classes I was working on, but what I have been involved in recently is working on Migrating Workstations from Novell eDirectory to Active Directory.

In this process I have come across an array of options in migrating accounts from a Local User account to Domain User account and transferring the profiles across to keep the user “look and feel” that they are accustomed to.

One problem: In this scenario it makes for a very manual rollback strategy, no matter how much scripting and automation is involved in the migration process. This boils down to Novells implementation of “Dynamic Local User” which effectively creates a Local User Account that is not really bound to a User Account in eDirectory for Authentication or mapping purposes (which you can see if you look at the account SIDs).


(continue reading…)

3 Comments :, , , , , , , , , more...

More GTD-PHP Work

by on Aug.20, 2009, under Authoring, Scripting, Tweet


Print This Post Print This Post

I have updated my GTD-PHP Email Import Addon so that it now integrates with the current Subversion revision of the code. There is one bug left in it, in that it will not check that there is a mail server set before it tries to connect. I find that this error occurs the first time the session is established with the server, and from then on it works fine. By performing an error check against $server = “” I should be able to remove that bug as well.

The updated EmailImport Addon is now available for download from the GTD-PHP Trac wiki.


(continue reading…)

Leave a Comment :, , , , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!