#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的).

解决方案 »

  1.   

    写到local machine下面去,服务启动时还不知道谁是current user
      

  2.   

    MapleInHG() 您好:这段代码是为了禁止ctrl+atl+del,写到local machine是不会起作用的.
    jiangsheng(蒋晟.MSMVP2004Jan) ( ):您好.我这个服务程序会起动一个对话框程序,在对话框程序中.我写的注册表.这样也不行吗?.我怎么才能取得这个权限.
      

  3.   

    组策略编辑器 我是引于.VC知识库的http://www.vckbase.com/document/viewdoc/?id=424通过对这个策略的设置可以屏蔽掉Ctrl+Alt+Del。如果要通过编写代码来实现,则必须操作下面的注册表项: HKCU\
     Software\
      Microsoft\
       Windows\
        CurrentVersion\
         Policies\
          System\DisableTaskMgr = dword:1
    我如上写了代码,而且还是放在一个由服务启动的对话框程序中的,在对话框初始化时执行的.
    如我的权限不足,要用什么方法才能有足够的权限.
                                谢谢大家!!!!!!!!!!!!!!
      

  4.   

    他说的我没用过,不过我大概看了一下MSDN,不太难用,头三个函数好像是任选一个
    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就是注册表句柄
      

  5.   

    晕,你要禁止 ctrl+alt+del,那还要windows干吗?
      

  6.   

    还可以找其它方法嘛,记得看到过一个很小的程序可以禁用
    下面是另一文:
    http://dev.csdn.net/develop/article/15/15645.shtm
      

  7.   

    哈哈 goodboyws(深夜不眠者)兄弟,给我找到问题的答案了
    http://www.codecomments.com/message526503.html.正在试,不知道行不行!各位兄弟要是有兴趣也试试!  
     
      

  8.   

    试了一下.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);还是不好用.兄弟看看会是什么原因呢?
      

  9.   

    不可能,local system 权限正常下是可以写注册表,除非是sam键,不过你可以用regedit32,在菜单中赋予lcoal system拥有所有权限
      

  10.   

    问题已解决,用的是:
    http://community.csdn.net/Expert/topic/4420/4420077.xml?temp=.8025171
    中的方法.