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











up vote
0
down vote

favorite












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 at 0:57















up vote
0
down vote

favorite












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 at 0:57













up vote
0
down vote

favorite









up vote
0
down vote

favorite











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 at 21:09









Ran Dom

346




346












  • Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph
    – Monofuse
    Nov 20 at 0:57


















  • Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph
    – Monofuse
    Nov 20 at 0:57
















Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph
– Monofuse
Nov 20 at 0:57




Have you tried Microsoft Graph? developer.microsoft.com/en-us/graph
– Monofuse
Nov 20 at 0:57












1 Answer
1






active

oldest

votes

















up vote
1
down vote













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',
    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








    up vote
    1
    down vote













    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



























      up vote
      1
      down vote













      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

























        up vote
        1
        down vote










        up vote
        1
        down vote









        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 at 18:35

























        answered Nov 20 at 17:33









        Gabriel Luci

        8,40411122




        8,40411122






























            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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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







            Popular posts from this blog

            Feedback on college project

            Futebolista

            Albești (Vaslui)