What is the most reliable way to get current AD domain-join information?...












0















With the advent of Azure AD domain join, several of the existing answers are likely outdated or incomplete.



What is the most accurate/reliable way to obtain the current AD domain status, and do it in such a way that I can tell if it's Azure AD, On Premise AD, or any other possible design (native UNIX Kerberos?)



Some of the keys I've found include:




  • HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon

  • HKLMCurrentControlSetServicesTcpipParametersDomain

  • Configuration/Policies/Administrative Templates/Windows Components/Workplace Join


Aside from calling the win32 API, DsRoleGetPrimaryDomainInformation, I may also inspect the registry.




  • What is the most reliable method to get the primary domain join status?


Any additional information that relates to verifying the computer trust, connectivity "quality" to the domain controllers would be useful.










share|improve this question























  • Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph

    – Monofuse
    Nov 20 '18 at 0:57
















0















With the advent of Azure AD domain join, several of the existing answers are likely outdated or incomplete.



What is the most accurate/reliable way to obtain the current AD domain status, and do it in such a way that I can tell if it's Azure AD, On Premise AD, or any other possible design (native UNIX Kerberos?)



Some of the keys I've found include:




  • HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon

  • HKLMCurrentControlSetServicesTcpipParametersDomain

  • Configuration/Policies/Administrative Templates/Windows Components/Workplace Join


Aside from calling the win32 API, DsRoleGetPrimaryDomainInformation, I may also inspect the registry.




  • What is the most reliable method to get the primary domain join status?


Any additional information that relates to verifying the computer trust, connectivity "quality" to the domain controllers would be useful.










share|improve this question























  • Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph

    – Monofuse
    Nov 20 '18 at 0:57














0












0








0








With the advent of Azure AD domain join, several of the existing answers are likely outdated or incomplete.



What is the most accurate/reliable way to obtain the current AD domain status, and do it in such a way that I can tell if it's Azure AD, On Premise AD, or any other possible design (native UNIX Kerberos?)



Some of the keys I've found include:




  • HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon

  • HKLMCurrentControlSetServicesTcpipParametersDomain

  • Configuration/Policies/Administrative Templates/Windows Components/Workplace Join


Aside from calling the win32 API, DsRoleGetPrimaryDomainInformation, I may also inspect the registry.




  • What is the most reliable method to get the primary domain join status?


Any additional information that relates to verifying the computer trust, connectivity "quality" to the domain controllers would be useful.










share|improve this question














With the advent of Azure AD domain join, several of the existing answers are likely outdated or incomplete.



What is the most accurate/reliable way to obtain the current AD domain status, and do it in such a way that I can tell if it's Azure AD, On Premise AD, or any other possible design (native UNIX Kerberos?)



Some of the keys I've found include:




  • HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon

  • HKLMCurrentControlSetServicesTcpipParametersDomain

  • Configuration/Policies/Administrative Templates/Windows Components/Workplace Join


Aside from calling the win32 API, DsRoleGetPrimaryDomainInformation, I may also inspect the registry.




  • What is the most reliable method to get the primary domain join status?


Any additional information that relates to verifying the computer trust, connectivity "quality" to the domain controllers would be useful.







c# winapi active-directory registry azure-active-directory






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 19 '18 at 21:09









Ran DomRan Dom

378




378













  • Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph

    – Monofuse
    Nov 20 '18 at 0:57



















  • Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph

    – Monofuse
    Nov 20 '18 at 0:57

















Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph

– Monofuse
Nov 20 '18 at 0:57





Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph

– Monofuse
Nov 20 '18 at 0:57












1 Answer
1






active

oldest

votes


















1














There seems to be two questions here:




  1. Find out if the computer is joined to a domain, and

  2. Find out what kind of domain it is.


I have a solution for the first question anyway. You tagged c#, so if that's what you're using, you can use Domain.GetComputerDomain. Put it in a try/catch block since if the computer is not joined to a domain, it will throw an ActiveDirectoryObjectNotFoundException exception.



But if it is joined to a domain, you get back a Domain object. That will give you some information about the domain, like the DomainMode. I don't have access to a machine joined to an AzureAD domain, so I don't know what that information looks like in that case, but it might be different.



Otherwise, for deeper information about the domain, you will likely need to use the Name of the domain and try to read more information from the domain itself.






share|improve this answer

























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53382671%2fwhat-is-the-most-reliable-way-to-get-current-ad-domain-join-information-dsrole%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    There seems to be two questions here:




    1. Find out if the computer is joined to a domain, and

    2. Find out what kind of domain it is.


    I have a solution for the first question anyway. You tagged c#, so if that's what you're using, you can use Domain.GetComputerDomain. Put it in a try/catch block since if the computer is not joined to a domain, it will throw an ActiveDirectoryObjectNotFoundException exception.



    But if it is joined to a domain, you get back a Domain object. That will give you some information about the domain, like the DomainMode. I don't have access to a machine joined to an AzureAD domain, so I don't know what that information looks like in that case, but it might be different.



    Otherwise, for deeper information about the domain, you will likely need to use the Name of the domain and try to read more information from the domain itself.






    share|improve this answer






























      1














      There seems to be two questions here:




      1. Find out if the computer is joined to a domain, and

      2. Find out what kind of domain it is.


      I have a solution for the first question anyway. You tagged c#, so if that's what you're using, you can use Domain.GetComputerDomain. Put it in a try/catch block since if the computer is not joined to a domain, it will throw an ActiveDirectoryObjectNotFoundException exception.



      But if it is joined to a domain, you get back a Domain object. That will give you some information about the domain, like the DomainMode. I don't have access to a machine joined to an AzureAD domain, so I don't know what that information looks like in that case, but it might be different.



      Otherwise, for deeper information about the domain, you will likely need to use the Name of the domain and try to read more information from the domain itself.






      share|improve this answer




























        1












        1








        1







        There seems to be two questions here:




        1. Find out if the computer is joined to a domain, and

        2. Find out what kind of domain it is.


        I have a solution for the first question anyway. You tagged c#, so if that's what you're using, you can use Domain.GetComputerDomain. Put it in a try/catch block since if the computer is not joined to a domain, it will throw an ActiveDirectoryObjectNotFoundException exception.



        But if it is joined to a domain, you get back a Domain object. That will give you some information about the domain, like the DomainMode. I don't have access to a machine joined to an AzureAD domain, so I don't know what that information looks like in that case, but it might be different.



        Otherwise, for deeper information about the domain, you will likely need to use the Name of the domain and try to read more information from the domain itself.






        share|improve this answer















        There seems to be two questions here:




        1. Find out if the computer is joined to a domain, and

        2. Find out what kind of domain it is.


        I have a solution for the first question anyway. You tagged c#, so if that's what you're using, you can use Domain.GetComputerDomain. Put it in a try/catch block since if the computer is not joined to a domain, it will throw an ActiveDirectoryObjectNotFoundException exception.



        But if it is joined to a domain, you get back a Domain object. That will give you some information about the domain, like the DomainMode. I don't have access to a machine joined to an AzureAD domain, so I don't know what that information looks like in that case, but it might be different.



        Otherwise, for deeper information about the domain, you will likely need to use the Name of the domain and try to read more information from the domain itself.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 20 '18 at 18:35

























        answered Nov 20 '18 at 17:33









        Gabriel LuciGabriel Luci

        11k11525




        11k11525
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53382671%2fwhat-is-the-most-reliable-way-to-get-current-ad-domain-join-information-dsrole%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            Tangent Lines Diagram Along Smooth Curve

            Yusuf al-Mu'taman ibn Hud

            Zucchini