Skip to content

Commit

Permalink
Load policies from arbitrary Registry keys
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben N committed Aug 23, 2016
1 parent ae8bb02 commit 682e3c9
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 44 deletions.
58 changes: 40 additions & 18 deletions PolicyPlus/OpenPol.Designer.vb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

66 changes: 41 additions & 25 deletions PolicyPlus/OpenPol.vb
Expand Up @@ -8,19 +8,25 @@
End Using
End Sub
Private Sub CompOptionsCheckedChanged(sender As Object, e As EventArgs) Handles CompLocalOption.CheckedChanged, CompRegistryOption.CheckedChanged, CompFileOption.CheckedChanged, CompNullOption.CheckedChanged
Dim textboxActive = CompFileOption.Checked
CompPolFilenameTextbox.Enabled = textboxActive
CompFileBrowseButton.Enabled = textboxActive
Dim regMount = CompRegistryOption.Checked
CompRegTextbox.Enabled = regMount
Dim polActive = CompFileOption.Checked
CompPolFilenameTextbox.Enabled = polActive
CompFileBrowseButton.Enabled = polActive
End Sub
Private Sub OpenPol_Shown(sender As Object, e As EventArgs) Handles Me.Shown
CompLocalOption.Checked = True
UserLocalOption.Checked = True
CompRegTextbox.Text = "HKLM"
CompPolFilenameTextbox.Text = ""
UserRegTextbox.Text = "HKCU"
UserPolFilenameTextbox.Text = ""
UserGpoSidTextbox.Text = ""
UserHivePathTextbox.Text = ""
End Sub
Private Sub UserOptionsCheckedChanged(sender As Object, e As EventArgs) Handles UserLocalOption.CheckedChanged, UserRegistryOption.CheckedChanged, UserFileOption.CheckedChanged, UserPerUserGpoOption.CheckedChanged, UserPerUserRegOption.CheckedChanged, UserNullOption.CheckedChanged
Dim regMount = UserRegistryOption.Checked
UserRegTextbox.Enabled = regMount
Dim file = UserFileOption.Checked
UserPolFilenameTextbox.Enabled = file
UserFileBrowseButton.Enabled = file
Expand All @@ -41,28 +47,38 @@
If OpenUserRegistry.ShowDialog = DialogResult.OK Then UserHivePathTextbox.Text = OpenUserRegistry.SelectedFilePath
End Sub
Private Sub OkButton_Click(sender As Object, e As EventArgs) Handles OkButton.Click
If CompLocalOption.Checked Then
SelectedComputer = New PolicyLoader(PolicyLoaderSource.LocalGpo, "", False)
ElseIf CompRegistryOption.Checked Then
SelectedComputer = New PolicyLoader(PolicyLoaderSource.LocalRegistry, "", False)
ElseIf CompFileOption.Checked Then
SelectedComputer = New PolicyLoader(PolicyLoaderSource.PolFile, CompPolFilenameTextbox.Text, False)
Else
SelectedComputer = New PolicyLoader(PolicyLoaderSource.Null, "", False)
End If
If UserLocalOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.LocalGpo, "", True)
ElseIf UserRegistryOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.LocalRegistry, "", True)
ElseIf UserFileOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.PolFile, UserPolFilenameTextbox.Text, True)
ElseIf UserPerUserGpoOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.SidGpo, UserGpoSidTextbox.Text, True)
ElseIf UserPerUserRegOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.NtUserDat, UserHivePathTextbox.Text, True)
Else
SelectedUser = New PolicyLoader(PolicyLoaderSource.Null, "", True)
End If
Try
If CompLocalOption.Checked Then
SelectedComputer = New PolicyLoader(PolicyLoaderSource.LocalGpo, "", False)
ElseIf CompRegistryOption.Checked Then
SelectedComputer = New PolicyLoader(PolicyLoaderSource.LocalRegistry, CompRegTextbox.Text, False)
ElseIf CompFileOption.Checked Then
SelectedComputer = New PolicyLoader(PolicyLoaderSource.PolFile, CompPolFilenameTextbox.Text, False)
Else
SelectedComputer = New PolicyLoader(PolicyLoaderSource.Null, "", False)
End If
Catch ex As Exception
MsgBox("The computer policy loader could not be created. " & ex.Message, MsgBoxStyle.Exclamation)
Exit Sub
End Try
Try
If UserLocalOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.LocalGpo, "", True)
ElseIf UserRegistryOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.LocalRegistry, UserRegTextbox.Text, True)
ElseIf UserFileOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.PolFile, UserPolFilenameTextbox.Text, True)
ElseIf UserPerUserGpoOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.SidGpo, UserGpoSidTextbox.Text, True)
ElseIf UserPerUserRegOption.Checked Then
SelectedUser = New PolicyLoader(PolicyLoaderSource.NtUserDat, UserHivePathTextbox.Text, True)
Else
SelectedUser = New PolicyLoader(PolicyLoaderSource.Null, "", True)
End If
Catch ex As Exception
MsgBox("The user policy loader could not be created. " & ex.Message, MsgBoxStyle.Exclamation)
Exit Sub
End Try
DialogResult = DialogResult.OK
End Sub
Private Sub UserBrowseGpoButton_Click(sender As Object, e As EventArgs) Handles UserBrowseGpoButton.Click
Expand Down
18 changes: 17 additions & 1 deletion PolicyPlus/PolicyLoader.vb
Expand Up @@ -16,7 +16,23 @@ Public Class PolicyLoader
MainSourcePath = Environment.ExpandEnvironmentVariables("%SYSTEMROOT%\System32\GroupPolicy\" & IIf(IsUser, "User", "Machine") & "\Registry.pol")
GptIniPath = Environment.ExpandEnvironmentVariables("%SYSTEMROOT%\System32\GroupPolicy\gpt.ini")
Case PolicyLoaderSource.LocalRegistry
MainSourceRegKey = RegistryKey.OpenBaseKey(IIf(IsUser, RegistryHive.CurrentUser, RegistryHive.LocalMachine), RegistryView.Default)
Dim pathParts = Split(Argument, "\", 2)
Dim baseName = pathParts(0).ToLowerInvariant
Dim baseKey As RegistryKey
If baseName = "hkcu" Or baseName = "hkey_current_user" Then
baseKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default)
ElseIf baseName = "hku" Or baseName = "hkey_users" Then
baseKey = RegistryKey.OpenBaseKey(RegistryHive.Users, RegistryView.Default)
ElseIf baseName = "hklm" Or baseName = "hkey_local_machine" Then
baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default)
Else
Throw New Exception("The root key is not valid.")
End If
If pathParts.Length = 2 Then
MainSourceRegKey = baseKey.CreateSubKey(pathParts(1))
Else
MainSourceRegKey = baseKey
End If
Case PolicyLoaderSource.PolFile
MainSourcePath = Argument
Case PolicyLoaderSource.SidGpo
Expand Down

0 comments on commit 682e3c9

Please sign in to comment.