mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
3.6 KiB
171 lines
3.6 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
msgalias.c
|
|
|
|
Abstract:
|
|
|
|
This file contains routines for adding and deleting message aliases
|
|
when a user logs on/off.
|
|
|
|
Author:
|
|
|
|
Dan Lafferty (danl) 21-Aug-1992
|
|
|
|
Environment:
|
|
|
|
User Mode -Win32
|
|
|
|
Revision History:
|
|
|
|
21-Aug-1992 danl
|
|
created
|
|
|
|
--*/
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
#define LPTSTR LPWSTR
|
|
|
|
|
|
|
|
|
|
VOID
|
|
DeleteMsgAliases(
|
|
VOID
|
|
)
|
|
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This function removes all message aliases except the ComputerName.
|
|
|
|
Arguments:
|
|
|
|
none
|
|
|
|
Return Value:
|
|
|
|
none
|
|
|
|
--*/
|
|
{
|
|
DWORD status;
|
|
LPMSG_INFO_0 InfoStruct;
|
|
DWORD entriesRead;
|
|
DWORD totalEntries;
|
|
DWORD resumeHandle = 0;
|
|
DWORD i;
|
|
WCHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
|
|
LPWSTR NewServerName = NULL;
|
|
DWORD bufLen = MAX_COMPUTERNAME_LENGTH + 1;
|
|
HANDLE dllHandle;
|
|
PMSG_NAME_DEL NetMessageNameDel = NULL;
|
|
PMSG_NAME_ENUM NetMessageNameEnum = NULL;
|
|
|
|
//
|
|
// Get the computer name
|
|
//
|
|
|
|
if (!GetComputerNameW(ComputerName,&bufLen)) {
|
|
DebugLog((DEB_ERROR, "failed to obtain the computername"));
|
|
}
|
|
|
|
//
|
|
// Get the address of the functions we need from netapi32.dll
|
|
//
|
|
dllHandle = LoadLibraryW(L"netapi32.dll");
|
|
if (dllHandle == NULL) {
|
|
return;
|
|
}
|
|
|
|
|
|
NetMessageNameEnum = (PMSG_NAME_ENUM) GetProcAddress(
|
|
dllHandle,
|
|
"NetMessageNameEnum");
|
|
|
|
if (NetMessageNameEnum == NULL) {
|
|
FreeLibrary(dllHandle);
|
|
return;
|
|
}
|
|
|
|
NetMessageNameDel = (PMSG_NAME_DEL) GetProcAddress(
|
|
dllHandle,
|
|
"NetMessageNameDel");
|
|
|
|
if (NetMessageNameDel == NULL) {
|
|
FreeLibrary(dllHandle);
|
|
return;
|
|
}
|
|
|
|
//
|
|
// Enumerate all the Message Aliases
|
|
//
|
|
|
|
status = NetMessageNameEnum (
|
|
NULL, // ServerName - Local version
|
|
0, // Level
|
|
(LPBYTE *)&InfoStruct, // return status buffer pointer
|
|
0xffffffff, // preferred max length
|
|
&entriesRead, // entries read
|
|
&totalEntries, // total entries
|
|
&resumeHandle); // resume handle
|
|
|
|
if (status != NERR_Success) {
|
|
// DebugLog((DEB_ERROR, "NetMessageNameEnum failed %d",status));
|
|
FreeLibrary(dllHandle);
|
|
return;
|
|
}
|
|
|
|
//
|
|
// Remove the aliases that are not the computername.
|
|
//
|
|
for (i=0; i<entriesRead ;i++) {
|
|
|
|
if (_wcsicmp(InfoStruct->msgi0_name, ComputerName) != 0) {
|
|
|
|
status = NetMessageNameDel(
|
|
NULL,
|
|
InfoStruct->msgi0_name);
|
|
if (status != NERR_Success) {
|
|
DebugLog((DEB_ERROR, "DeleteMsgAliases: Name - %ws - delete failed",
|
|
InfoStruct->msgi0_name));
|
|
}
|
|
}
|
|
InfoStruct++;
|
|
}
|
|
|
|
FreeLibrary(dllHandle);
|
|
}
|
|
|
|
|
|
VOID
|
|
TickleMessenger(VOID)
|
|
{
|
|
HANDLE hDll;
|
|
PMSG_NAME_DEL NetMessageNameDel = NULL;
|
|
|
|
//
|
|
// Get the address of the functions we need from netapi32.dll
|
|
//
|
|
hDll = LoadLibraryW(L"netapi32.dll");
|
|
if (hDll == NULL) {
|
|
return;
|
|
}
|
|
|
|
NetMessageNameDel = (PMSG_NAME_DEL) GetProcAddress(
|
|
hDll,
|
|
"NetMessageNameDel");
|
|
|
|
if (NetMessageNameDel) {
|
|
|
|
NetMessageNameDel(NULL, TEXT(""));
|
|
}
|
|
|
|
FreeLibrary(hDll);
|
|
|
|
}
|