كيف يمكن للمرء تغيير اسم الكمبيوتر Windows 2000 في .NET 2.0؟

StackOverflow https://stackoverflow.com/questions/2330400

سؤال

أحاول تغيير اسم الكمبيوتر (اسم المضيف) على Windows 2000 باستخدام .NET 2.0. لم يتم ربط الكمبيوتر بمجال.

يوفر Windows XP و أعلى طريقة WMI Win32_ComputerSystem.Rename, ، ولكن هذا غير متوفر في Windows 2000 (إشارة هنا).

أنا لا أكره الاتصال فقط ببرنامج خارجي إذا احتجت إلى ذلك ، لكن يبدو أنني لا يبدو أنه يجد برنامجًا يعمل على Windows 2000. يبدو أن البحث على Google لم يظهر أي شيء واضح.

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

أعتقد أن واجهة برمجة تطبيقات Windows قد تكون مفيدة على Windows 2000: الاستخدام SetComputerNameEx:

BOOL WINAPI SetComputerNameEx(
  __in  COMPUTER_NAME_FORMAT NameType,
  __in  LPCTSTR lpBuffer
);

تعتمد هذه العينة على العينة على pinvoke.net:

public class RenameComputer
{
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    static extern bool SetComputerNameEx(COMPUTER_NAME_FORMAT NameType, string lpBuffer);

    enum COMPUTER_NAME_FORMAT
    {
        ComputerNameNetBIOS,
        ComputerNameDnsHostname,
        ComputerNameDnsDomain,
        ComputerNameDnsFullyQualified,
        ComputerNamePhysicalNetBIOS,
        ComputerNamePhysicalDnsHostname,
        ComputerNamePhysicalDnsDomain,
        ComputerNamePhysicalDnsFullyQualified,
    }

    //ComputerNamePhysicalDnsHostname used to rename the computer name and netbios name before domain join
    public static bool Rename(string name)
    {
        bool result = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsHostname, name);
        if (!result)
            throw new Win32Exception();

        return result;
    }
}

بالإضافة إلى P-inving the winapi قد تستخدمه أيضًا Process.Start بالاشتراك مع netsh الأمر كما هو موضح هنا.

نصائح أخرى

هناك مثال في C تحت هذا الرابط. هل يمكن أن بينفوك ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top