2009-09-26 84 views
0

有没有办法强制当前交互(登录)用户注销(不知道这是不推荐),然后用新的用户帐户登录(交互式 - 不使用像LogonUser和其他模拟技巧)来模拟有人按LOGOFF,然后选择一个新帐户登录...?如何以编程方式注销当前用户并以另一用户身份登录?

问题是我的服务以编程方式创建一个新的用户帐户 - 我需要找到一种方法来创建其相应的用户配置文件。从我所能看到的唯一方法是将物理注销当前用户,然后以新用户身份登录(这将创建HKCU的用户配置文件,文档&设置等)。听起来有点疯狂,但我找不到更好的方式...

所以,我需要找到一种方法来强制注销&登录操作(从我运行的Windows服务在LocalSystem下) - 我拥有所有所需的证书和访问权限......是否可以使用系统函数调用?

对于注销我认为我可以使用WTSLogoffSession(...),仍然试图让它的工作,但似乎很有前途 - 但我不知道如何做登录... 如果有更好的方法解决我的问题,我所有的耳朵:)

任何帮助或提示将不胜感激...... 谢谢,

+1

是否有以编程方式创建用户帐户的正当理由? – 2009-09-26 17:39:57

+0

是否有正当理由强制某人注销? – 2009-09-26 17:51:19

+0

只有这样我才可以与其他用户登录并强制创建用户配置文件(HKCU,Documents&Settings等)...我无法找到更好的方法... – Shaitan00 2009-09-26 19:36:59

回答

0

微软在C++中有这个解决方案,你可以使用它来破解一个c#解决方案,或者放入一个DLL并使用COM interop调用它。

http://support.microsoft.com/kb/196070

+0

试过这一个 - 它似乎并没有在我的系统上工作(Windows 2000 Pro和Win XP SP2) - 我没有遇到任何错误或异常情况,帐户已创建,LoadProfile运行 - 但用户配置文件不会创建。 – Shaitan00 2009-09-26 20:00:36

+0

没关系 - 我认为现在已经解决 - 我错误地加载了一些参数... – Shaitan00 2009-09-26 20:27:29

+0

你如何做这个C#? – jaysonragasa 2010-03-12 07:12:59

0

你确实有必要以登录用户或只是创建?对于创作,你可以使用

  • NetGroupAdd()
  • NetUserAdd()
  • NetGroupAddUser()
  • NetLocalGroupAdd()
  • NetLocalGroupAddMember()

的API

+0

但是从什么我知道 - 这些都不会为您创建用户配置文件......他们将以用户身份(工作正常)登录,但不会显示文档和设置,不会显示HKEY CURRENT USER等等,直到发生交互式登录(从我见过)。 或者做一个你列出的方法做一些特别的事情?我还没有尝试过每一个...... – Shaitan00 2009-09-26 18:33:33

+0

http://support.microsoft.com/kb/196070,LoadUserProfile应该做的窍门 – AlexEzh 2009-09-26 21:08:45

相关问题