用过编过GINA.DLL的高手请进来讨论

wjl_2001 2002-04-12 03:08:17
如下程序段为何都返回ERROR_SUCCESS,难道与UNICODE有关?
int WINAPI WlxLoggedOnSAS (
PVOID pWlxContext,
DWORD dwSasType,
PVOID pReserved)
{result=RegOpenKeyEx(userclient,(LPCTSTR)"tyclient",0,KEY_ALL_ACCESS,&hkey);
//找到键值
if(result==ERROR_SUCCESS)
{
WriteInfo("find key!disable ctrl+alt+del\r\n");
RegCloseKey(hkey);
//令CTRL+ALT+DEL DISABLE
return WLX_SAS_ACTION_NONE;
}
WriteInfo("no key!enable ctrl+alt+del\r\n");
//创建键值
RegCreateKeyEx(userclient,(LPCTSTR)"tyclient",0L,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,NULL);
return prcWlxLoggedOnSAS (
pWlxContext,
dwSasType,
pReserved);
}


...全文
70 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
load 2002-04-15
  • 打赏
  • 举报
回复
GINA里是UNICODE,要不你试一下RegCreateKeyExA

还有RegEnumKeyEx的参数:

LONG RegEnumKeyEx(
HKEY hKey, // handle to key to enumerate
DWORD dwIndex, // index of subkey to enumerate
LPTSTR lpName, // address of buffer for subkey name
LPDWORD lpcbName, // address for size of subkey buffer
LPDWORD lpReserved, // reserved
LPTSTR lpClass, // address of buffer for class string
LPDWORD lpcbClass, // address for size of class buffer
PFILETIME lpftLastWriteTime
// address for time key last written to
);

每次返回对比lpcbName,返回ERROR_NO_MORE_ITEMS时表示没有项目了。

这办法较“土”,或许有别的好办法 :)
wjl_2001 2002-04-13
  • 打赏
  • 举报
回复
好奇怪:
RegCreateKeyEx
通常可以正常返回
但在gina.dll里肯定不行
不管有没有键值
不知试过多少遍
花了我多少时间
wjl_2001 2002-04-12
  • 打赏
  • 举报
回复
请帮我把RegEnumKeyEx的参数介绍一下好吗,象我这种情况参数是什么?
load 2002-04-12
  • 打赏
  • 举报
回复
其实RegOpenKeyEx不管有没有这个键只要执行正确都返回ERROR_SUCCESS的。

实现你那个功能该用RegEnumKeyEx,看看返回的子键有没有和你的名称一样的,具体使用见MSDN :)

quchunyu 2002-04-12
  • 打赏
  • 举报
回复
跟GINA没多少关系!受骗啦!
load 2002-04-12
  • 打赏
  • 举报
回复
有没有键都返回成功 :)
不能满足你的需要。
wjl_2001 2002-04-12
  • 打赏
  • 举报
回复
我的程序意思是:在检测到有tyclient子键时令CTRL+ALT+DEL失效,
而没有tyclient子键时则令CTRL+ALT+DEL起作用,再建立tyclient子键,
令下次启动时失效,
你说的"返回效果都一样,没有键的话还能帮你建立!"
是不是指没有键的话帮你建立返回非ERROR_SUCCESS
有键的话返回ERROR_SUCCESS?

load 2002-04-12
  • 打赏
  • 举报
回复
用 wcscpy 函数或 memcpy()
load 2002-04-12
  • 打赏
  • 举报
回复
(LPCTSTR) 可以不要吧。

建议用 RegCreateKeyEx( HKEY_LOCAL_MACHINE,
TEXT("??????"),
0,
TEXT(""),
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hMiniKey,
&Disposition);

返回效果都一样,没有键的话还能帮你建立!
wjl_2001 2002-04-12
  • 打赏
  • 举报
回复
另外,LPCTSTR abc="tyclient";为什么编译老出错,非UNICODE却不会
wjl_2001 2002-04-12
  • 打赏
  • 举报
回复
userclient=HKEY_CURRENT_USER;无影响
(LPCTSTR)TEXT("tyclient")行吗?
load 2002-04-12
  • 打赏
  • 举报
回复
还有: userclient 是什么东东?会不会有影响?
load 2002-04-12
  • 打赏
  • 举报
回复
凡是有字符串的地方都加TEXT(), 如"tyclient" -》TEXT("tyclient")
GINA里编译是UNICODE。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧