none
請問vb.net如何讀取本機群組原則 RRS feed

  • 問題

  • 各位大大,我利用AD設了gpo,如密碼原則的密碼最長使用期限90天,最短使用期限1天,這些值在client端可以利用gpedit查到值,但不知是否可以使用程式的方式去讀取,請各位大大指導,謝謝!
    2018年12月26日 上午 05:16

所有回覆

  • 1. 可以用 Group Policy Setting registry 找到對應的登錄機碼:

    https://www.microsoft.com/en-us/download/details.aspx?id=25250

    2. C++ 有 Group Policy API 可操作。

    https://docs.microsoft.com/zh-tw/previous-versions/windows/desktop/Policy/group-policy-start-page

    (註:.NET 無法使用 COM Interop 叫用這些介面)

    3. RSoP 則有 WMI API 可操作。

    https://docs.microsoft.com/zh-tw/previous-versions/windows/desktop/Policy/rsop-wmi-classes#_win32_group_policy_core_classes



    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2019年1月5日 上午 01:46
    版主
  • 1. 可以用 Group Policy Setting registry 找到對應的登錄機碼:

    https://www.microsoft.com/en-us/download/details.aspx?id=25250

    2. C++ 有 Group Policy API 可操作。

    https://docs.microsoft.com/zh-tw/previous-versions/windows/desktop/Policy/group-policy-start-page

    (註:.NET 無法使用 COM Interop 叫用這些介面)

    3. RSoP 則有 WMI API 可操作。

    https://docs.microsoft.com/zh-tw/previous-versions/windows/desktop/Policy/rsop-wmi-classes#_win32_group_policy_core_classes



    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    慼謝大大指導,我的程度太差,上面連結的資訊有些實在太難了,不過也有一些收獲,AD GPO的設定大部份會在RIGISTER加入登錄機碼,所以在網路找了範例程式可以取得設定的值,範例如下:

            Dim strKeyPath As String = "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Power\PowerSettings"
            Dim objManagementScope As ManagementScope
            Dim objManagementClass As ManagementClass
            Dim objManagementBaseObject As ManagementBaseObject
            objManagementScope = New ManagementScope
            objManagementScope.Path.Server = strComputerName
            objManagementScope.Path.NamespacePath = "root\default"
            objManagementScope.Options.EnablePrivileges = True
            objManagementScope.Options.Impersonation = ImpersonationLevel.Impersonate
            objManagementScope.Connect()
            Dim myValue As String

            objManagementClass = New ManagementClass("stdRegProv")
            objManagementClass.Scope = objManagementScope
            objManagementBaseObject = objManagementClass.GetMethodParametersGetDWORDValue
            objManagementBaseObject.SetPropertyValue("hDefKey", CType("&H" & Hex(RegistryHive.LocalMachine), Long))
            objManagementBaseObject.SetPropertyValue("sSubKeyName", strKeyPath)
            objManagementBaseObject.SetPropertyValue("sValueName", "DCSettingIndex")
            objManagementBaseObject = objManagementClass.InvokeMethod("GetDWORDValue", objManagementBaseObject, Nothing)

            myValue = objManagementBaseObject("sValue")

    以上程式碼仍有一些缺失,就是取機碼值時,因為類型不一樣,取值時參數就不一樣,如REG_SZ要使用"GetStringValue",而REG_DWORD則使用"GetDWORDValue",想寫一個函數去判斷要取的機碼值是那一個類型,該如何寫?請大大指導,謝謝!

    2019年1月18日 上午 08:08