Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2272回复:22

在驱动中能够得当前登录的用户名吗?

楼主#
更多 发布于:2002-05-20 18:08

最新喜欢:

agchenagchen
Tom_lyd
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-07 17:03
是登录以后运行的。
Tom_lyd
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-07 14:57
你的驱动程序是什么时候运行这部分代码的啊!用户登陆之前还是之后啊?
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-07 14:00
我为什么在内核态打开这个键失败?
代码如下:
BOOLEAN ret = FALSE;
    NTSTATUS status;

    OBJECT_ATTRIBUTES Attributes;
    HANDLE LogonKey;
    ULONG BufferSize, ResultLength;
    PVOID Buffer = NULL;

    PKEY_VALUE_PARTIAL_INFORMATION pValuePartialInfo;

//
// The registry key that the current logon usre name stays.
//
WCHAR UserKey[]
= L\"\\\\Registry\\\\User\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Explorer\";
UNICODE_STRING Logon;

WCHAR UserName[] = L\"\\\\Logon User Name\";
UNICODE_STRING LogonUser;

__try
{
__try
{
//
// Initialize the registry key.
//
RtlInitUnicodeString( &Logon, UserKey );
InitializeObjectAttributes( &Attributes,
&Logon,
OBJ_CASE_INSENSITIVE,
NULL,
NULL ); //Void return

status = ZwOpenKey( &LogonKey, KEY_READ, &Attributes );
if( !NT_SUCCESS(status) )
{
LogonKey = NULL;
return( ret=FALSE );
}

BufferSize = sizeof(KEY_VALUE_PARTIAL_INFORMATION) + USERNAMELEN;
Buffer = ExAllocatePool(NonPagedPool, BufferSize);

if( !Buffer )
return( ret=FALSE );
//
// Read the \"Logon User Name\" from the registry key
//
RtlInitUnicodeString( &LogonUser, UserName );

status = ZwQueryValueKey( LogonKey,
&LogonUser,
KeyValuePartialInformation,
Buffer,
BufferSize,
&ResultLength);

if( NT_SUCCESS(status) )
{
pValuePartialInfo = (PKEY_VALUE_PARTIAL_INFORMATION) Buffer;
ASSERT( pValuePartialInfo->Type == REG_SZ );
//        gMaxRecordsToAllocate = *((PLONG)&(pValuePartialInfo->Data));
RtlCopyMemory( pGlobalData->LogonUserName,
(PCHAR)(pValuePartialInfo->Data),
pValuePartialInfo->DataLength );
} else {

RtlCopyMemory( pGlobalData->LogonUserName, \"???\", 3 );
}
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
DbgPrint((\"Read registry key value error\\n\"));
}
}
__finally
{
if( Buffer)
ExFreePool( Buffer );

if( LogonKey )
ZwClose( LogonKey );
}
    return ret;
Tom_lyd
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-23 14:32
不谢不谢~~我觉得应该是不会变的!两外一个思考反向是2000的本地策略处得到SID,然后由SID换成用户名!靠查两个以上的键实现,比较麻烦,但是是绝对可靠的!因为本地策略是一定执行的,而且绝对是依靠这几个键,具体的键名我忘了!你可以用REGMON跟一下啊!就跟SHELL。DLL修改注册表的就可以了!你可以先准备好修改一个什么东西,然后打开REGMON,再应用一下,马上就可以看见改了什么~~那个取消驱动签名的方法我也是这么研究来的!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-23 11:23
哈哈找到了!刚刚研究了一下发现了这个![HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Logon User Name]

Logon User Name这个项的值是个REG_SZ!就是当前登陆的用户名!!


这个值我测试以后,发现可以。但不知如果使用某种安全设置,它会不会被删掉。
谢谢.X.T.I.M.
 
 
Tom_lyd
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-23 10:44
不用争了!上次我说的那个KEY实验通过!证明在2000下有效~~其他系统没做实验!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
ppl
ppl
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2006-05-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-23 08:52
 看看这个
 HKCU \\Network\\G
Ares
驱动小牛
驱动小牛
  • 注册日期2001-03-28
  • 最后登录2020-04-09
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望114点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2002-05-22 21:28
2000下好像没有WINLOGIN这个键啊
易水
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-22 09:55
对于这些加载值在DDK里面有说明啊!
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-21 17:11
[quot]0和1肯定是不可以的只有2有可能可以!3肯定是可以的!除非你写了一个程序是在登陆之前运行[/quot]
To guardee:
你说的不行指的是什么意思?我不太理解。我的意思是当Start=3时,驱动程序是手动加载的,一定是在登录以后。那当Start为0,1或2 时,是在logon之前加载还是在logon后加载?还是因Start的值而异?
Tom_lyd
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-21 16:40
0和1肯定是不可以的只有2有可能可以!3肯定是可以的!除非你写了一个程序是在登陆之前运行
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-05-21 16:23
先谢谢各位的回答。
我找到一Winlogon子键,发现的用户登录确能显示当前的用户名,但不知是否100%可靠。
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\AltDefaultUserName

另外一个关于驱动程序加载时间的问题。在注册表中将驱动程序的Start值置为0、1、2则自动加载,不需要手动加载。但是这个加载是在用户登录之前还是登录之后呢?我没有真正测试过,不知有哪位兄弟知道? 这个顺序是否还与Start值有关?
Tom_lyd
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-21 15:48
哈哈找到了!刚刚研究了一下发现了这个![HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Logon User Name]

Logon User Name这个项的值是个REG_SZ!就是当前登陆的用户名!!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-21 15:39
但是我敢肯定的说可以在HKCU里面做文章!每个用户的PROFILER是不一样的!朝这个思路去找!
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-21 15:37
呀~~原来我和C++说的是同一个东西~~晕~~
HKCU\\Environment

TEMP
HKCU\\Environment

Data type     Range      Default value
REG_EXPAND_SZ  Path  %USERPROFILE%\\Temp  
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-05-21 15:35
有个很弱的部分~~不知道大家同不同意!先得到TEMP目录,然后返回两层就是UER-NAME命名的目录!这样就得到了!至于怎么得到TEMP目录RES KIT里面有!我好象看过~~我找找~~
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
zzfd97
驱动小牛
驱动小牛
  • 注册日期2002-02-01
  • 最后登录2005-07-31
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-05-21 15:02
谢谢,两位的指点!
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-05-21 14:56
Guardee, 我注意了这个键,发现无论以哪个用户名登录,都是显示同一个用户。
Tom_lyd
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-05-21 10:30
不知道我说的对你有没有用!
在注册表的HKEY_CURRENT_USER下有一个键叫
Volatile Environment他有一个变量叫做APPDATA的,他的值上面有你需要的,这是我临时看的!
具体的你去研究吧! :D :D :D :D :D :D :D :D
上一页
游客

返回顶部