最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 修改windows中賬戶(hù)的用戶(hù)名和密碼

 更新時(shí)間:2020年11月24日 09:22:43   作者:沙奇碼丶  
這篇文章主要介紹了c# 改變windows中賬戶(hù)的用戶(hù)名和密碼,幫助大家更好的理解和學(xué)習(xí)C#,感興趣的朋友可以了解下

在 C# 中,我們可以使用 WMI 類(lèi)中的 Win32_Service 或者 Win32 API 中的函數(shù) ChangeServiceConfig 來(lái)修改本地或遠(yuǎn)程計(jì)算機(jī) Windows 服務(wù)登錄身份 (賬戶(hù)) 的用戶(hù)名和密碼。

1、使用 Win32 API 修改服務(wù)登錄身份信息:

使用 Win32 API 中的函數(shù) ChangeServiceConfig 更改的是服務(wù)控制管理器數(shù)據(jù)庫(kù)中指定服務(wù)的配置信息。

private const int SC_MANAGER_ALL_ACCESS = 0x000F003F;
private const uint SERVICE_NO_CHANGE = 0xffffffff; //這個(gè)值可以在 winsvc.h 中找到
private const uint SERVICE_QUERY_CONFIG = 0x00000001;
private const uint SERVICE_CHANGE_CONFIG = 0x00000002;
 
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern Boolean ChangeServiceConfig(IntPtr hService, UInt32 nServiceType, 
  UInt32 nStartType,UInt32 nErrorControl,String lpBinaryPathName,String lpLoadOrderGroup,
  IntPtr lpdwTagId, [In] char[] lpDependencies, String lpServiceStartName, 
  String lpPassword, String lpDisplayName);
 
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern IntPtr OpenService(IntPtr hSCManager, string lpServiceName, uint dwDesiredAccess);
 
[DllImport("advapi32.dll", EntryPoint = "OpenSCManagerW", ExactSpelling = true, 
  CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr OpenSCManager(string machineName, string databaseName, uint dwAccess);
 
public static bool ChangeServiceAccountInfo(string serviceName, string username,string password)
{
  try
  {
    IntPtr scm_Handle = OpenSCManager(null, null, SC_MANAGER_ALL_ACCESS);
    if (scm_Handle == IntPtr.Zero)
     throw new System.Runtime.InteropServices.ExternalException("打開(kāi)服務(wù)管理器錯(cuò)誤");
 
    IntPtr service_Handle = OpenService(scm_Handle, serviceName,SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG);
    if (service_Handle == IntPtr.Zero)
     throw new System.Runtime.InteropServices.ExternalException("打開(kāi)服務(wù)錯(cuò)誤");
    //修改服務(wù)的賬戶(hù)用戶(hù)名和密碼
    if (!ChangeServiceConfig(service_Handle, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, 
       SERVICE_NO_CHANGE, null, null, IntPtr.Zero, null, username, password, null))
    {
      int nError = Marshal.GetLastWin32Error();
      Win32Exception win32Exception = new Win32Exception(nError);
      throw new System.Runtime.InteropServices.ExternalException("無(wú)法修改服務(wù)登錄身份的用戶(hù)名和密碼:" + win32Exception.Message);
    }
    Console.WriteLine("服務(wù)登錄身份信息修改成功!");
    return true;
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.ToString());
    return false;
  }
}

2、使用 C# 中 WMI 修改服務(wù)登錄身份信息:

使用 WMI 服務(wù),我們需要添加 System.Management 的引用。

注意:如果您的遠(yuǎn)程計(jì)算機(jī)連接的是 Active Directory 域,那么使用完全限定的用戶(hù)名(例如 TestDomainMorgan)而不是簡(jiǎn)單的用戶(hù)名(Morgan)。

using System.Management;

public static void ChangeServiceAccountInfobyWMI(string serviceName, string username, string password)
{
  string mgmntPath = string.Format("Win32_Service.Name='{0}'", serviceName);
  using (ManagementObject service = new ManagementObject(new ManagementPath(mgmntPath)))
  {
    object[] accountParams = new object[11];
    accountParams[6] = username;
    accountParams[7] = password;
    uint returnCode = (uint)service.InvokeMethod("Change", accountParams);
    if (returnCode == 0)
    {
       Console.WriteLine("服務(wù)登錄身份信息修改成功!");
    }
    else
    {
       Console.WriteLine("服務(wù)登錄身份信息修改失敗");
       Console.WriteLine("錯(cuò)誤代碼:" + returnCode);
       // 此微軟官方支持鏈接,可以查看相應(yīng)的返回代碼的消息:
       // https://msdn.microsoft.com/en-us/library/aa393660(v=vs.85).aspx
    }
  }
}

3、使用 C#中的 WMI 修改遠(yuǎn)程計(jì)算機(jī)服務(wù)的登錄身份信息:

使用 WMI 服務(wù),我們需要添加 System.Management 的引用,并且在修改遠(yuǎn)程計(jì)算機(jī)中的服務(wù)信息時(shí),請(qǐng)使用管理員憑據(jù)。

注意:如果您的遠(yuǎn)程計(jì)算機(jī)連接的是 Active Directory 域,那么使用完全限定的用戶(hù)名(例如 TestDomainMorgan)而不是簡(jiǎn)單的用戶(hù)名(Morgan)。

using System.Management;
static void ChangeRemoteServiceAccountInfo(string remoteComputer, string serviceName, string username, string password)
{
  try
  {
    ConnectionOptions connectionOptions = new ConnectionOptions();
    // 如需要,請(qǐng)使用證書(shū)
    //connectionOptions.Username = "Administrator";
    //connectionOptions.Password = "AdminPassword";
    //connectionOptions.Impersonation = ImpersonationLevel.Impersonate;
    ManagementScope scope = new ManagementScope("\" + remoteComputer + "rootCIMV2", connectionOptions);
    scope.Connect();
    string mgmntPath = string.Format("Win32_Service.Name='{0}'", serviceName);
    using (ManagementObject service = new ManagementObject(scope, new ManagementPath(mgmntPath),new ObjectGetOptions()))
    {
      object[] accountParams = new object[11];
      accountParams[6] = username;
      accountParams[7] = password;
      uint returnCode = (uint)service.InvokeMethod("Change", accountParams);
      if (returnCode == 0)
      {
        Console.WriteLine("服務(wù)登錄身份信息修改成功!");
      }
      else
      {
        Console.WriteLine("服務(wù)登錄身份信息修改失敗");
        Console.WriteLine("錯(cuò)誤代碼:" + returnCode);
        // 此微軟官方支持鏈接,可以查看相應(yīng)的返回代碼信息:
        // https://msdn.microsoft.com/en-us/library/aa393660(v=vs.85).aspx
      }
    }
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.ToString());
  }
}

以上就是c# 改變windows中賬戶(hù)的用戶(hù)名和密碼的詳細(xì)內(nèi)容,更多關(guān)于c# 更改用戶(hù)名和密碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法

    vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法

    這篇文章主要介紹了vs2019 實(shí)現(xiàn)C#調(diào)用c++的dll兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C#?多窗口委托通信的實(shí)現(xiàn)

    C#?多窗口委托通信的實(shí)現(xiàn)

    本文主要介紹了C#?多窗口委托通信的實(shí)現(xiàn),窗口之間通信無(wú)非有兩個(gè)方向,主窗口發(fā)送數(shù)據(jù)到副窗口,副窗口發(fā)送數(shù)據(jù)到主窗口,感興趣的可以了解一下
    2022-03-03
  • C#實(shí)現(xiàn)字體旋轉(zhuǎn)的方法

    C#實(shí)現(xiàn)字體旋轉(zhuǎn)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)字體旋轉(zhuǎn)的方法,涉及C#通過(guò)Matrix實(shí)現(xiàn)字體旋轉(zhuǎn)效果的方法,需要的朋友可以參考下
    2015-06-06
  • C# Winform窗口之間傳值的多種方法淺析

    C# Winform窗口之間傳值的多種方法淺析

    這篇文章主要介紹了C# Winform窗口之間傳值的多種方法淺析,本文起講解了通過(guò)構(gòu)造器傳值、通過(guò)屬性傳遞、通過(guò)事件攜帶參數(shù)傳遞等方法,需要的朋友可以參考下
    2015-04-04
  • C#窗體控件DataGridView常用設(shè)置

    C#窗體控件DataGridView常用設(shè)置

    這篇文章主要為大家詳細(xì)介紹了C#窗體控件DataGridView常用10項(xiàng)設(shè)置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C#生成驗(yàn)證碼圖片的方法

    C#生成驗(yàn)證碼圖片的方法

    這篇文章主要為大家詳細(xì)介紹了C#生成驗(yàn)證碼圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • c#和javascript函數(shù)相互調(diào)用示例分享

    c#和javascript函數(shù)相互調(diào)用示例分享

    在webBrowser使用過(guò)程中為了C#和JS通訊,webBrowser必須設(shè)置ObjectForScripting的屬性,它是一個(gè)object,這個(gè)object可以提供給webBrowser控件載入的網(wǎng)頁(yè)上的script訪問(wèn)
    2014-01-01
  • C#實(shí)現(xiàn)前向最大匹、字典樹(shù)(分詞、檢索)的示例代碼

    C#實(shí)現(xiàn)前向最大匹、字典樹(shù)(分詞、檢索)的示例代碼

    這篇文章主要介紹了C#實(shí)現(xiàn)前向最大匹、字典樹(shù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • C#中內(nèi)聯(lián)函數(shù)的用法介紹

    C#中內(nèi)聯(lián)函數(shù)的用法介紹

    這篇文章介紹了C#中內(nèi)聯(lián)函數(shù)的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#實(shí)現(xiàn)給圖片添加文字水印的示例代碼

    C#實(shí)現(xiàn)給圖片添加文字水印的示例代碼

    在某些應(yīng)用項(xiàng)目中,查看電子圖片信息是經(jīng)常使用到的功能,此時(shí)我們就需要給顯示在瀏覽器中的圖片添加文字水印版權(quán)或提示信息,下面我們就來(lái)看看如何使用C#實(shí)現(xiàn)給圖片添加文字水印吧
    2024-04-04

最新評(píng)論

碌曲县| 邹城市| 华容县| 沙坪坝区| 乌兰察布市| 扶绥县| 扶绥县| 永春县| 塘沽区| 天峨县| 公主岭市| 海兴县| 永修县| 平昌县| 白朗县| 正蓝旗| 泰兴市| 三门县| 孝义市| 西乌珠穆沁旗| 岫岩| 五台县| 楚雄市| 西城区| 宁津县| 清流县| 乌苏市| 罗山县| 交城县| 广宁县| 东阳市| 兴业县| 罗源县| 广灵县| 鹿邑县| 银川市| 临沂市| 丽江市| 修水县| 湘阴县| 稻城县|