[NETAPI32]

Implement NetAddAlternateComputerName, NetJoinDomain, NetRemoveAlternateComputerName, NetRenameMachineInDomain, NetSetPrimaryComputerName and NetUnjoinDomain. These functions call their counterparts in the workstation service.


svn path=/trunk/; revision=75032
This commit is contained in:
Eric Kohl 2017-06-14 09:50:54 +00:00
parent 25b44b332b
commit 4747d6a5c1
2 changed files with 247 additions and 7 deletions

View file

@ -99,7 +99,7 @@
@ stub I_NetlogonComputeClientDigest @ stub I_NetlogonComputeClientDigest
@ stub I_NetlogonComputeServerDigest @ stub I_NetlogonComputeServerDigest
@ stub I_NetlogonGetTrustRid @ stub I_NetlogonGetTrustRid
@ stub NetAddAlternateComputerName @ stdcall NetAddAlternateComputerName(wstr wstr wstr wstr long)
@ stdcall NetAlertRaise(wstr ptr long) @ stdcall NetAlertRaise(wstr ptr long)
@ stdcall NetAlertRaiseEx(wstr ptr long wstr) @ stdcall NetAlertRaiseEx(wstr ptr long wstr)
@ stdcall NetApiBufferAllocate(long ptr) @ stdcall NetApiBufferAllocate(long ptr)
@ -161,7 +161,7 @@
@ stdcall NetGroupGetUsers(wstr wstr long ptr long ptr ptr ptr) @ stdcall NetGroupGetUsers(wstr wstr long ptr long ptr ptr ptr)
@ stdcall NetGroupSetInfo(wstr wstr long ptr ptr) @ stdcall NetGroupSetInfo(wstr wstr long ptr ptr)
@ stdcall NetGroupSetUsers(wstr wstr long ptr long) @ stdcall NetGroupSetUsers(wstr wstr long ptr long)
@ stub NetJoinDomain @ stdcall NetJoinDomain(wstr wstr wstr wstr wstr long)
@ stdcall NetLocalGroupAdd(wstr long ptr ptr) @ stdcall NetLocalGroupAdd(wstr long ptr ptr)
@ stdcall NetLocalGroupAddMember(wstr wstr ptr) @ stdcall NetLocalGroupAddMember(wstr wstr ptr)
@ stdcall NetLocalGroupAddMembers(wstr wstr long ptr long) @ stdcall NetLocalGroupAddMembers(wstr wstr long ptr long)
@ -184,8 +184,8 @@
@ stub NetRegisterDomainNameChangeNotification @ stub NetRegisterDomainNameChangeNotification
@ stub NetRemoteComputerSupports @ stub NetRemoteComputerSupports
@ stdcall NetRemoteTOD(wstr ptr) @ stdcall NetRemoteTOD(wstr ptr)
@ stub NetRemoveAlternateComputerName @ stdcall NetRemoveAlternateComputerName(wstr wstr wstr wstr long)
@ stub NetRenameMachineInDomain @ stdcall NetRenameMachineInDomain(wstr wstr wstr wstr long)
@ stub NetReplExportDirAdd @ stub NetReplExportDirAdd
@ stub NetReplExportDirDel @ stub NetReplExportDirDel
@ stub NetReplExportDirEnum @ stub NetReplExportDirEnum
@ -223,7 +223,7 @@
@ stdcall NetSessionDel(wstr wstr wstr) @ stdcall NetSessionDel(wstr wstr wstr)
@ stdcall NetSessionEnum(wstr wstr wstr long ptr long ptr ptr ptr) @ stdcall NetSessionEnum(wstr wstr wstr long ptr long ptr ptr ptr)
@ stdcall NetSessionGetInfo(wstr wstr wstr long ptr) @ stdcall NetSessionGetInfo(wstr wstr wstr long ptr)
@ stub NetSetPrimaryComputerName @ stdcall NetSetPrimaryComputerName(wstr wstr wstr wstr long)
@ stdcall NetShareAdd(wstr long ptr ptr) @ stdcall NetShareAdd(wstr long ptr ptr)
@ stdcall NetShareCheck(wstr wstr ptr) @ stdcall NetShareCheck(wstr wstr ptr)
@ stdcall NetShareDel(wstr wstr long) @ stdcall NetShareDel(wstr wstr long)
@ -233,7 +233,7 @@
@ stdcall NetShareGetInfo(wstr wstr long ptr) @ stdcall NetShareGetInfo(wstr wstr long ptr)
@ stdcall NetShareSetInfo(wstr wstr long ptr ptr) @ stdcall NetShareSetInfo(wstr wstr long ptr ptr)
@ stdcall NetStatisticsGet(wstr wstr long long ptr) @ stdcall NetStatisticsGet(wstr wstr long long ptr)
@ stub NetUnjoinDomain @ stdcall NetUnjoinDomain(wstr wstr wstr long)
@ stub NetUnregisterDomainNameChangeNotification @ stub NetUnregisterDomainNameChangeNotification
@ stdcall NetUseAdd(wstr long ptr ptr) @ stdcall NetUseAdd(wstr long ptr ptr)
@ stdcall NetUseDel(wstr wstr long) @ stdcall NetUseDel(wstr wstr long)

View file

@ -138,9 +138,49 @@ WKSSVC_IMPERSONATE_HANDLE_unbind(WKSSVC_IMPERSONATE_HANDLE pszSystemName,
} }
NET_API_STATUS
WINAPI
NetAddAlternateComputerName(
_In_opt_ LPCWSTR Server,
_In_ LPCWSTR AlternateName,
_In_opt_ LPCWSTR DomainAccount,
_In_opt_ LPCWSTR DomainAccountPassword,
_In_ ULONG Reserved)
{
PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword;
handle_t BindingHandle;
NET_API_STATUS status;
TRACE("NetAddAlternateComputerName(%s %s %s %s 0x%lx)\n",
debugstr_w(Server), debugstr_w(AlternateName), debugstr_w(DomainAccount),
debugstr_w(DomainAccountPassword), Reserved);
/* FIXME */
BindingHandle = NULL;
EncryptedPassword = NULL;
RpcTryExcept
{
status = NetrAddAlternateComputerName(BindingHandle,
(PWSTR)Server,
(PWSTR)AlternateName,
(PWSTR)DomainAccount,
EncryptedPassword,
Reserved);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
#if 0 #if 0
NET_API_STATUS NET_API_STATUS
NET_API_FUNCTION WINAPI
NetGetJoinInformation( NetGetJoinInformation(
LPCWSTR Server, LPCWSTR Server,
LPWSTR *Name, LPWSTR *Name,
@ -171,6 +211,206 @@ NetGetJoinInformation(
#endif #endif
NET_API_STATUS
WINAPI
NetJoinDomain(
_In_ LPCWSTR lpServer,
_In_ LPCWSTR lpDomain,
_In_ LPCWSTR lpAccountOU,
_In_ LPCWSTR lpAccount,
_In_ LPCWSTR lpPassword,
_In_ DWORD fJoinOptions)
{
PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword;
handle_t BindingHandle;
NET_API_STATUS status;
TRACE("NetJoinDomain(%s %s %s %s 0x%lx)\n",
debugstr_w(lpServer), debugstr_w(lpDomain), debugstr_w(lpAccountOU),
debugstr_w(lpAccount), debugstr_w(lpPassword), fJoinOptions);
/* FIXME */
BindingHandle = NULL;
EncryptedPassword = NULL;
RpcTryExcept
{
status = NetrJoinDomain2(BindingHandle,
(PWSTR)lpServer,
(PWSTR)lpDomain,
(PWSTR)lpAccountOU,
(PWSTR)lpAccount,
EncryptedPassword,
fJoinOptions);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
NET_API_STATUS
WINAPI
NetRemoveAlternateComputerName(
_In_opt_ LPCWSTR Server,
_In_ LPCWSTR AlternateName,
_In_opt_ LPCWSTR DomainAccount,
_In_opt_ LPCWSTR DomainAccountPassword,
_In_ ULONG Reserved)
{
PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword;
handle_t BindingHandle;
NET_API_STATUS status;
TRACE("NetRemoveAlternateComputerName(%s %s %s %s 0x%lx)\n",
debugstr_w(Server), debugstr_w(AlternateName), debugstr_w(DomainAccount),
debugstr_w(DomainAccountPassword), Reserved);
/* FIXME */
BindingHandle = NULL;
EncryptedPassword = NULL;
RpcTryExcept
{
status = NetrRemoveAlternateComputerName(BindingHandle,
(PWSTR)Server,
(PWSTR)AlternateName,
(PWSTR)DomainAccount,
EncryptedPassword,
Reserved);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
NET_API_STATUS
WINAPI
NetRenameMachineInDomain(
_In_ LPCWSTR lpServer,
_In_ LPCWSTR lpNewMachineName,
_In_ LPCWSTR lpAccount,
_In_ LPCWSTR lpPassword,
_In_ DWORD fRenameOptions)
{
PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword;
handle_t BindingHandle;
NET_API_STATUS status;
TRACE("NetRenameMachineInDomain(%s %s %s %s 0x%lx)\n",
debugstr_w(lpServer), debugstr_w(lpNewMachineName), debugstr_w(lpAccount),
debugstr_w(lpPassword), fRenameOptions);
/* FIXME */
BindingHandle = NULL;
EncryptedPassword = NULL;
RpcTryExcept
{
status = NetrRenameMachineInDomain2(BindingHandle,
(PWSTR)lpServer,
(PWSTR)lpNewMachineName,
(PWSTR)lpAccount,
EncryptedPassword,
fRenameOptions);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
NET_API_STATUS
WINAPI
NetSetPrimaryComputerName(
_In_opt_ LPCWSTR Server,
_In_ LPCWSTR PrimaryName,
_In_opt_ LPCWSTR DomainAccount,
_In_opt_ LPCWSTR DomainAccountPassword,
_In_ ULONG Reserved)
{
PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword;
handle_t BindingHandle;
NET_API_STATUS status;
TRACE("NetSetPrimaryComputerName(%s %s %s %s %lu)\n",
debugstr_w(Server), debugstr_w(PrimaryName), debugstr_w(DomainAccount),
debugstr_w(DomainAccountPassword), Reserved);
/* FIXME */
BindingHandle = NULL;
EncryptedPassword = NULL;
RpcTryExcept
{
status = NetrSetPrimaryComputerName(BindingHandle,
(PWSTR)Server,
(PWSTR)PrimaryName,
(PWSTR)DomainAccount,
EncryptedPassword,
Reserved);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
NET_API_STATUS
WINAPI
NetUnjoinDomain(
_In_ LPCWSTR lpServer,
_In_ LPCWSTR lpAccount,
_In_ LPCWSTR lpPassword,
_In_ DWORD fUnjoinOptions)
{
PJOINPR_ENCRYPTED_USER_PASSWORD EncryptedPassword;
handle_t BindingHandle;
NET_API_STATUS status;
TRACE("NetUnjoinDomain(%s %s %s %s 0x%lx)\n",
debugstr_w(lpServer), debugstr_w(lpAccount),
debugstr_w(lpPassword), fUnjoinOptions);
/* FIXME */
BindingHandle = NULL;
EncryptedPassword = NULL;
RpcTryExcept
{
status = NetrUnjoinDomain2(BindingHandle,
(PWSTR)lpServer,
(PWSTR)lpAccount,
EncryptedPassword,
fUnjoinOptions);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return status;
}
NET_API_STATUS NET_API_STATUS
WINAPI WINAPI
NetUseAdd( NetUseAdd(