Windows服务中操作HKEY_CURRENT_USER注册表

原创 2017年01月03日 17:16:32

主要思想是:在Windows服务(System)中,通过模拟用户登录,获得Session ID,然后对当前用户注册表项操作。
public IntPtr GetTokenAsCurrentUser()
{
IntPtr hTokenUser = IntPtr.Zero;
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
if (String.Compare(@”NT AUTHORITY\SYSTEM”, userName, true) == 0)
{
int consoleSessionId = WTSGetActiveConsoleSessionId();
if (WTSQueryUserToken(consoleSessionId, out hTokenUser))
{
return hTokenUser;
}
}

return hTokenUser;
}

public bool GetCurrentUserSID(ref string CurrentUserSID)
{
IntPtr hUserToken = GetTokenAsCurrentUser();
if (hUserToken != IntPtr.Zero)
{
if (!ImpersonateLoggedOnUser(hUserToken))
{
return false;
}
CloseHandle(hUserToken);

System.Security.Principal.WindowsIdentity windowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
CurrentUserSID = windowsIdentity.User.ToString();

if (!RevertToSelf())//come back
{
}
return true;
}
return false;

}

public void Do()
{
string CurrentUserSID = string.Empty;
if (CTControlCenter.Common.AnalogLogon.AnalogLogon.GetCurrentUserSID(ref CurrentUserSID))
{
RegistryKey rsg = Registry.Users.OpenSubKey(CurrentUserSID + “\” + @”Software\Microsoft”, true);
if (rsg != null)
{
rsg.Close();
}
}
}

注:部分API属于C++接口,需要导入使用。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

windows下服务或SYSTEM权限读取当前用户注册表HKEY_CURRENT_USER

最近一直在给一个程序增加一个功能,需要修改

服务中读取当前用户注册表HKEY_CURRENT_USER

服务中读取当前用户注册表HKEY_CURRENT_USER 原文地址:http://hi.baidu.com/solohac/item/dfc68f5301fedb918c12ed4b tag...

如何读取指定用户的 HKEY_CURRENT_USER 注册表键

注册表中 HKEY_CURRENT_USER 键下的内容隶属当前用户,所以当你以不同用户登陆时该键下的内容都是不尽相同的。但有时候我们有读取指定用户该键下内容的需求。比如,我们有一个服务程序运行在 S...

服务中读取当前用户注册表HKEY_CURRENT_USER

服务 HKEY_CURRENT_USER HKEY_USER 读取 RegQueryValueEx 注册表   我在服务程序中使用RegQueryValueEx读取注册表HKEY_CURR...

如何读取指定用户的 HKEY_CURRENT_USER 注册表键

注册表中 HKEY_CURRENT_USER 键下的内容隶属当前用户,所以当你以不同用户登陆时该键下的内容都是不尽相同的。但有时候我们有读取指定用户该键下内容的需求。比如,我们有一个服务程序运行在 S...

在服务中模拟当前登录用户读取HKEY_CURRENT_USER

在服务中模拟当前登录用户读取HKEY_CURRENT_USER #include #include #pragma comment(lib, "Wtsapi32.lib") int...

VC 用服务进程开启有UI的进程和写注册表HKEY_CURRENT_USER子键的问题

有时我们需要通过服务进程来启动某个进程,且该被启动的进程有UI,或者需要用服务进程来写HKEY_CURRENT_USER子键,此时我们就会碰到一个问题:被启动的进程看不到UI,但在进程列表中却能看到该...

system 权限读取注册表HKEY_CURRENT_USER

注册表中 HKEY_CURRENT_USER 键下的内容隶属当前用户,所以当你以不同用户登陆时该键下的内容都是不尽相同的。但有时候我们有读取指定用户该键下内容的需求。比如,我们有一个服务程序运行在 S...

从系统服务进程访问HKEY_CURRENT_USER主键

gh0st服务端中写了个函数修改HKEY_CURRENT_USER里面键的值,demo中都能顺利修改,但移植到服务端中却无法修改(后来才发现其实是修改了的,不过却是修改到HKEY_USER\.Defa...

【转】在内核中之获取HKEY_CURRENT_USER对应路径

wesley心得,HKEY_CLASSES_ROOT路径下的注册表项(Local Settings),是由LocalMachine和users合并而成,并且users在前。 转载http://w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)