Как Вы программно определяете, является ли компьютер Windows членом домена?

Последнее ключевое слово для переменной означает, что значение не может быть изменено. Переменная должна быть установлена ​​один раз, и затем ее нельзя изменить.

Переменная инициализируется либо когда она объявлена:

private final String name = "Rover";

... или в конструкторе, как вы это сделали в своем коде выше.

В приведенном выше примере кода метод setName не будет работать с окончательным именем. Однако вы можете вызвать setAmountOfSpeed, так как amountOfSpeed ​​не является окончательным.

Последнее ключевое слово часто используется для представления констант:

public final float PI = 3.14159;

Вот статья о дополнительном использовании последнего слова.

https://www.geeksforgeeks.org/final-keyword-java/

10
задан tzot 15 October 2008 в 20:18
поделиться

6 ответов

Прямо от Microsoft:

Как Определить, Является ли Windows NT / Компьютер Windows 2000 Доменным участником

Этот подход использует Windows API. Из сводки статьи:

Эта статья описывает, как определить, является ли компьютер, который выполняет Windows NT 4.0 или Windows 2000, членом домена, является членом рабочей группы или является автономным использующим компьютеры API полномочий Локальной защиты.

Статья также предоставляет код кода для небольшой программы, что выводы, работает ли компьютер программа, являются частью домена, частью рабочей группы или автономным компьютером.

11
ответ дан 3 December 2019 в 21:24
поделиться

Можно проверить HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon ключа реестра на значение 'CachePrimaryDomain'.

1
ответ дан 3 December 2019 в 21:24
поделиться

Избегайте LSA, который является неправильным методом. Необходимо использовать API DS (2 строки кода)

0
ответ дан 3 December 2019 в 21:24
поделиться

Я думаю, что функция NetServerEnum поможет Вам в том, что Вы хотите; я попросил бы главные контроллеры домена с SV_TYPE_DOMAIN_CTRL постоянный для servertype параметра. Если Вы не получаете никого, то Вы не находитесь в домене.

3
ответ дан 3 December 2019 в 21:24
поделиться

Код в образце MSDN немного устарел. Это - функция, которую я придумал, который работает.

bool ComputerBelongsToDomain()
{
    bool ret = false;

    LSA_OBJECT_ATTRIBUTES objectAttributes;
    LSA_HANDLE policyHandle;
    NTSTATUS status;
    PPOLICY_PRIMARY_DOMAIN_INFO info;

    // Object attributes are reserved, so initialize to zeros.
    ZeroMemory(&objectAttributes, sizeof(objectAttributes));

    status = LsaOpenPolicy(NULL, &objectAttributes, GENERIC_READ | POLICY_VIEW_LOCAL_INFORMATION, &policyHandle);
    if (!status)
    {
        status = LsaQueryInformationPolicy(policyHandle, PolicyPrimaryDomainInformation, (LPVOID*)&info);
        if (!status)
        {
            if (info->Sid)
                ret = true;

            LsaFreeMemory(info);
        }

        LsaClose(policyHandle);
    }

    return ret;
}
1
ответ дан 3 December 2019 в 21:24
поделиться

что относительно с названия компьютера?

править: это было дрянным 'ответом' от пути назад. То, что я имел в виду, было cheching для формы domain\name на имя компьютера. Это, конечно, подразумевает знание названия домена оно не делает решает проблему просто знания, если компьютер находится в каком-либо домене.

0
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: