软件注册站
热情软件屋

 
如何使我的进程有超级用户的权限
编号: QA004866    
建立日期: 2004年8月30日 最后修改日期: 2004年8月30日
所属类别: C/C++ - Windows API
   
    操作系统:Win2000
    编程工具:VC++
    问题:我想利用
     hThread = OpenThread(THREAD_TERMINATE, FALSE, dwThreadid);//te32.th32ThreadID);
    
Re = GetLastError();
    

    来停止一个知道了线程ID号的线程,但总是返回错误号5(Access is denied)
    是我的进程的权限不够,能告诉我如何使我的进程有超级用户的权限,谢谢!!
    水平: 中级(刘东)
   
    li_xf的意见:
    首先使用LogonUser函数创建一个token.
    根据调用参数,有可能需要调用 DuplicateTokenEx 函数,将impersonation token 转换为a primary token.
    
    然后使用这个token 调用CreateProcessAsUser函数,创建一个拥有该用户安全上下文(context)的进程.
    (具体例子详见MSDN)
    
    函数原型:
    BOOL LogonUser(
    
LPTSTR lpszUsername,
    
LPTSTR lpszDomain,
    
LPTSTR lpszPassword,
    
DWORD dwLogonType,
    
DWORD dwLogonProvider,
    
PHANDLE phToken
    
);
    
BOOL CreateProcessAsUser(
    
HANDLE hToken,
    
LPCTSTR lpApplicationName,
    
LPTSTR lpCommandLine,
    
LPSECURITY_ATTRIBUTES lpProcessAttributes,
    
LPSECURITY_ATTRIBUTES lpThreadAttributes,
    
BOOL bInheritHandles,
    
DWORD dwCreationFlags,
    
LPVOID lpEnvironment,
    
LPCTSTR lpCurrentDirectory,
    
LPSTARTUPINFO lpStartupInfo,
    
LPPROCESS_INFORMATION lpProcessInformation
    
);
    
BOOL DuplicateTokenEx(
    
HANDLE hExistingToken,
    
DWORD dwDesiredAccess,
    
LPSECURITY_ATTRIBUTES lpTokenAttributes,
    
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
    
TOKEN_TYPE TokenType,
    
PHANDLE phNewToken
    
);
    
    

    Michael Jin的意见:
    应该不是权限不够,想要中止的线程是界面线程,只能在线程内部使用THREAD_TERMINATE。

    

此问题由Michael Jin等回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Windows API, win32, api, windows api, gdi32, kernel

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio