admin
base
com
developer
drivers
ds
enduser
inetcore
inetsrv
loc
mergedcomponents
multimedia
net
printscan
ddk
dload
fax
faxsrv
inc
lib
print
drivers
embedded
spooler
dbglib
exts
idl
inc
inetpp2
clientui
inc
lib
server
win95
winnt
anonycon.cxx
anonycon.hxx
anycon.cxx
anycon.hxx
basicsec.cxx
basicsec.h
cachemgr.cxx
cachemgr.h
cachemgr.hxx
config.cxx
config.h
debug.cxx
debug.h
dirs
globals.cxx
globals.h
iecon.cxx
iecon.hxx
inetport.cxx
inetport.h
inetpp.cxx
inetpp.def
inetpp.h
inetpp.rc
inetwrap.cxx
inetwrap.h
lusrdata.cxx
lusrdata.hxx
mem.cxx
mem.h
ntcon.cxx
ntcon.hxx
othercon.cxx
othercon.hxx
ping.cxx
portmgr.cxx
portmgr.hxx
portmgrc.hxx
ppchange.cxx
ppchange.h
ppinfo.cxx
ppinfo.h
ppinit.cxx
ppjobs.cxx
ppjobs.h
ppport.cxx
ppport.h
ppprn.cxx
ppprn.h
precomp.h
priv.h
pusrdata.cxx
pusrdata.hxx
resource.h
sem.h
sid.cxx
sid.h
sources.inc
spljob.cxx
spljob.h
splpjm.cxx
splpjm.h
stream.cxx
stream.h
stubs.cxx
stubs.h
userdata.cxx
userdata.hxx
util.cxx
util.h
xcv.cxx
xcv.h
dirs
inetsrv
localspl
monitors
oleprn
perflib
prtprocs
scripts
splexts
spllib
splsetup
spoolss
wpnpinst
dirs
makefil0
dirs
publish
scan
ui
wia
dirs
project.mk
public
published
sdktools
shell
termsrv
tools
windows
dirs
makefil0
60 lines
1.1 KiB
C++
60 lines
1.1 KiB
C++
|
|
#include "precomp.h"
|
|
|
|
#ifdef WINNT32
|
|
|
|
#include "priv.h"
|
|
|
|
CSid::CSid ():
|
|
m_hToken (NULL)
|
|
{
|
|
if (!OpenThreadToken(GetCurrentThread(),
|
|
TOKEN_IMPERSONATE,
|
|
TRUE,
|
|
&m_hToken)) {
|
|
|
|
DBG_MSG (DBG_LEV_CALLTREE, (_T ("OpenThreadToken failed: %d\n"), GetLastError()));
|
|
m_bValid = FALSE;
|
|
|
|
} else
|
|
|
|
m_bValid = TRUE;
|
|
}
|
|
|
|
CSid::~CSid()
|
|
{
|
|
if (m_hToken) {
|
|
CloseHandle (m_hToken);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
BOOL
|
|
CSid::SetCurrentSid ()
|
|
{
|
|
#ifdef DEBUG
|
|
WCHAR UserName[256];
|
|
DWORD cbUserName=256;
|
|
|
|
GetUserName(UserName, &cbUserName);
|
|
|
|
DBG_MSG (DBG_LEV_CALLTREE, (_T ("SetCurrentSid BEFORE: user name is %ws\n"), UserName));
|
|
#endif
|
|
|
|
NtSetInformationThread(NtCurrentThread(), ThreadImpersonationToken,
|
|
&m_hToken, sizeof(m_hToken));
|
|
|
|
#ifdef DEBUG
|
|
cbUserName = 256;
|
|
|
|
GetUserName(UserName, &cbUserName);
|
|
|
|
DBG_MSG (DBG_LEV_CALLTREE, (_T ("SetCurrentSid AFTER: user name is %ws\n"), UserName));
|
|
#endif
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
#endif
|