#define HKCU HKEY_CURRENT_USERLPCTSTR KEY_DisableTaskMgr =
"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
LPCTSTR VAL_DisableTaskMgr = "DisableTaskMgr";
HKEY hk;
if (RegOpenKey(HKCU, KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS)//,0,KEY_WRITE
RegCreateKey(HKCU, KEY_DisableTaskMgr, &hk);
/*{
DWORD dwPos;
RegCreateKeyEx(HKCU, KEY_DisableTaskMgr,
0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hk, &dwPos);
}*/ if (bDisable) { // disable TM: set policy = 1
DWORD val=1;
RegSetValueEx(hk, VAL_DisableTaskMgr, NULL,
REG_DWORD, (BYTE*)&val, sizeof(val));
//RegCloseKey(hk); } else { // enable TM: remove policy
RegDeleteValue(hk,VAL_DisableTaskMgr);
}
同样一段代码,在普通程序中向注册表中定入值就成功,可放在服务程序中就不成功.(这个服务程序是为了禁止ctrl+atl+del的).
"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
LPCTSTR VAL_DisableTaskMgr = "DisableTaskMgr";
HKEY hk;
if (RegOpenKey(HKCU, KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS)//,0,KEY_WRITE
RegCreateKey(HKCU, KEY_DisableTaskMgr, &hk);
/*{
DWORD dwPos;
RegCreateKeyEx(HKCU, KEY_DisableTaskMgr,
0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hk, &dwPos);
}*/ if (bDisable) { // disable TM: set policy = 1
DWORD val=1;
RegSetValueEx(hk, VAL_DisableTaskMgr, NULL,
REG_DWORD, (BYTE*)&val, sizeof(val));
//RegCloseKey(hk); } else { // enable TM: remove policy
RegDeleteValue(hk,VAL_DisableTaskMgr);
}
同样一段代码,在普通程序中向注册表中定入值就成功,可放在服务程序中就不成功.(这个服务程序是为了禁止ctrl+atl+del的).
解决方案 »
- 誰知道SMTP AUTH NTLM命令格式
- 急!!!平滑移动位图..
- 急!!!(逐条读取数据库记录,放入内存堆中)
- 请问怎么触发Clistctrl控件第一列的编辑功能。
- 怎样让ATL控件在设计时窗体上不能被改变大小?在运行时自动不可见?
- VC使用ADO的问题,出现错误提示:IDispatch error #3149
- 请教各位大侠关于屏幕取词的问题
- 怎么console方式编译在.net里面不能用了?
- 控件Enable
- 关于windows自身的复制和剪贴?
- 能不能把CreateProcess产生的进程都放在一个group里面?
- 哪位知道CMDIFRAME类中是否有m_hWndMDIClient这个成员?我们如何才能知道MFC中类成员都有哪些?
jiangsheng(蒋晟.MSMVP2004Jan) ( ):您好.我这个服务程序会起动一个对话框程序,在对话框程序中.我写的注册表.这样也不行吗?.我怎么才能取得这个权限.
Software\
Microsoft\
Windows\
CurrentVersion\
Policies\
System\DisableTaskMgr = dword:1
我如上写了代码,而且还是放在一个由服务启动的对话框程序中的,在对话框初始化时执行的.
如我的权限不足,要用什么方法才能有足够的权限.
谢谢大家!!!!!!!!!!!!!!
BOOL LogonUser(
LPTSTR lpszUsername, // user name
LPTSTR lpszDomain, // domain or server
LPTSTR lpszPassword, // password
DWORD dwLogonType, // type of logon operation
DWORD dwLogonProvider, // logon provider
PHANDLE phToken // receive tokens handle
);
登录得到一个hToken;
BOOL LoadUserProfile(
HANDLE hToken, // user token
LPPROFILEINFO lpProfileInfo // profile
);
得到PROFILEINFO结构
lpProfileInfo->hProfile就是注册表句柄
下面是另一文:
http://dev.csdn.net/develop/article/15/15645.shtm
http://www.codecomments.com/message526503.html.正在试,不知道行不行!各位兄弟要是有兴趣也试试!
#define WINVER 0x500
#define _WIN32_WINNT 0x0500#include "StdAfx.h"
#include "TaskKeyMgr.h"
#include <Userenv.h>#pragma comment(lib,"UserEnv.lib")LPCTSTR KEY_DisableTaskMgr =
"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
LPCTSTR VAL_DisableTaskMgr = "DisableTaskMgr";
HANDLE hLogonToken;
PROFILEINFO ProfileInfo; LogonUser("*****",NULL,"*****",LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hLogonToken);
LoadUserProfile(hLogonToken,&ProfileInfo);//HKCU
HKEY hk;
if (RegOpenKey((HKEY)ProfileInfo.hProfile, KEY_DisableTaskMgr,&hk)!=ERROR_SUCCESS)//,0,KEY_WRITE
//RegCreateKey(HKCU, KEY_DisableTaskMgr, &hk);
//RegCreateKeyEx(HKCU,KEY_DisableTaskMgr,NULL,KEY_ALL_ACCESS|KEY_SET_VALUE,&hk);
{
DWORD dwPos;
RegCreateKeyEx((HKEY)ProfileInfo.hProfile, KEY_DisableTaskMgr,
0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, NULL, &hk, &dwPos);
} if (bDisable) { // disable TM: set policy = 1
DWORD val=1;
RegSetValueEx(hk, VAL_DisableTaskMgr, NULL,
REG_DWORD, (BYTE*)&val, sizeof(val));
//RegCloseKey(hk); } else { // enable TM: remove policy
RegDeleteValue(hk,VAL_DisableTaskMgr);
}
//RegCloseKey(hk);还是不好用.兄弟看看会是什么原因呢?
http://community.csdn.net/Expert/topic/4420/4420077.xml?temp=.8025171
中的方法.