c# 修改windows中賬戶的用戶名和密碼_第1頁
c# 修改windows中賬戶的用戶名和密碼_第2頁
c# 修改windows中賬戶的用戶名和密碼_第3頁
c# 修改windows中賬戶的用戶名和密碼_第4頁
c# 修改windows中賬戶的用戶名和密碼_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

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

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

privateconstintSC_MANAGER_ALL_ACCESS=0x000F003F;

privateconstuintSERVICE_NO_CHANGE=0xffffffff;//這個值可以在winsvc.h中找到

privateconstuintSERVICE_QUERY_CONFIG=0x00000001;

privateconstuintSERVICE_CHANGE_CONFIG=0x00000002;

[DllImport("advapi32.dll",CharSet=CharSet.Unicode,SetLastError=true)]

publicstaticexternBooleanChangeServiceConfig(IntPtrhService,UInt32nServiceType,

UInt32nStartType,UInt32nErrorControl,StringlpBinaryPathName,StringlpLoadOrderGroup,

IntPtrlpdwTagId,[In]char[]lpDependencies,StringlpServiceStartName,

StringlpPassword,StringlpDisplayName);

[DllImport("advapi32.dll",SetLastError=true,CharSet=CharSet.Auto)]

staticexternIntPtrOpenService(IntPtrhSCManager,stringlpServiceName,uintdwDesiredAccess);

[DllImport("advapi32.dll",EntryPoint="OpenSCManagerW",ExactSpelling=true,

CharSet=CharSet.Unicode,SetLastError=true)]

publicstaticexternIntPtrOpenSCManager(stringmachineName,stringdatabaseName,uintdwAccess);

publicstaticboolChangeServiceAccountInfo(stringserviceName,stringusername,stringpassword)

IntPtrscm_Handle=OpenSCManager(null,null,SC_MANAGER_ALL_ACCESS);

if(scm_Handle==IntPtr.Zero)

thrownewSystem.Runtime.InteropServices.ExternalException("打開服務(wù)管理器錯誤");

IntPtrservice_Handle=OpenService(scm_Handle,serviceName,SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG);

if(service_Handle==IntPtr.Zero)

thrownewSystem.Runtime.InteropServices.ExternalException("打開服務(wù)錯誤");

//修改服務(wù)的賬戶用戶名和密碼

if(!ChangeServiceConfig(service_Handle,SERVICE_NO_CHANGE,SERVICE_NO_CHANGE,

SERVICE_NO_CHANGE,null,null,IntPtr.Zero,null,username,password,null))

intnError=Marshal.GetLastWin32Error();

Win32Exceptionwin32Exception=newWin32Exception(nError);

thrownewSystem.Runtime.InteropServices.ExternalException("無法修改服務(wù)登錄身份的用戶名和密碼:"+win32Exception.Message);

Console.WriteLine("服務(wù)登錄身份信息修改成功!");

returntrue;

catch(Exceptionex)

Console.WriteLine(ex.ToString());

returnfalse;

}

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

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

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

usingSystem.Management;

publicstaticvoidChangeServiceAccountInfobyWMI(stringserviceName,stringusername,stringpassword)

stringmgmntPath=string.Format("Win32_Service.Name='{0}'",serviceName);

using(ManagementObjectservice=newManagementObject(newManagementPath(mgmntPath)))

object[]accountParams=newobject[11];

accountParams[6]=username;

accountParams[7]=password;

uintreturnCode=(uint)service.InvokeMethod("Change",accountParams);

if(returnCode==0)

Console.WriteLine("服務(wù)登錄身份信息修改成功!");

else

Console.WriteLine("服務(wù)登錄身份信息修改失敗");

Console.WriteLine("錯誤代碼:"+returnCode);

//此微軟官方支持鏈接,可以查看相應(yīng)的返回代碼的消息:

///en-us/library/aa393660(v=vs.85).aspx

}

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

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

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

usingSystem.Management;

staticvoidChangeRemoteServiceAccountInfo(stringremoteComputer,stringserviceName,stringusername,stringpassword)

ConnectionOptionsconnectionOptions=newConnectionOptions();

//如需要,請使用證書

//connectionOptions.Username="Administrator";

//connectionOptions.Password="AdminPassword";

//connectionOptions.Impersonation=ImpersonationLevel.Impersonate;

ManagementScopescope=newManagementScope("\"+remoteComputer+"rootCIMV2",connectionOptions);

scope.Connect();

stringmgmntPath=string.Format("Win32_Service.Name='{0}'",serviceName);

using(ManagementObjectservice=newManagementObject(scope,newManagementPath(mgmntPath),newObjectGetOptions()))

object[]accountParams=newobject[11];

accountParams[6]=username;

accountParams[7]=password;

uintreturnCode=(uint)service.InvokeMethod("Change",accountParams);

if(returnCode==0)

Console.WriteLine("服務(wù)登錄身份信息修改成功!");

else

Console.WriteLine("服務(wù)登錄身份信息修改失敗");

Console.Writ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論