卤煮注意, 你的问题应该不是登陆的账号问题, 
通过你的描述“但直接以user打开和直接以Administrator账号登录后打开都没有问题”可以肯定你的问题应该就是“以管理员身份运行”的时候出现bug, 如果你要找bug, 以管理园运行与直接运行的区别在于, 你获取当前程序的路径是不一样的, 直接获取的就是你真实的目录, 以管理员运行获取的却是windows目录, 这样可能造成你操作windows目录的时候被阻止。
还有一些环境变量的值也会不一样
一个简单的例子, 把下面的代码拷贝出来,保存成一个bat文件, 你直接运行和以管理员运行可以看到获取的当前目录是不一样的:
@echo off
echo %cd%
pause

解决方案 »

  1.   

    还是增加一些Log等来定位你的问题,到底什么地方出问题了,用户切换会有一些进程运行时候见的区别
      

  2.   

    我的问题应该已经调查比较清楚了,因为在很多系统中测过很多次了。问题就在Vista/7等版本中,如果登录的用户名不是Administrator,这时“以管理员身份运行”启动软件,某个我需要的系统调用不能正常工作,应该是Windows的一个bug,不过微软显然不愿意改了。只有32-bit系统是这样,64位系统没问题。Vista/7/8/2008都是这样,实际上不需要切换用户,只要登录的用户不是Administrator,比如叫headegg,即使“以管理员身份运行”启动软件用的用户名也是“headegg”,一样会这样。
    这个问题比较复杂,再说一些细节:
    问题出现在:
    1)32位Windows Vista/7/8/2008系统,但64位系统下是好好的,怎么换用户都没问题
    2)以一个不叫Administrator的用户名登录(不管这个用户是不是admin组),然后“以管理员身份运行”(不管“以管理员身份运行”后用哪个用户名),这时会出问题,但直接以Administrator用户名登录就没有任何问题,即使“以管理员身份运行”也一样。
    3)具体问题是我调用一个Windows的钩子,在出问题的系统环境下,我只有把鼠标移到我的软件的界面上,这个钩子才工作...没出问题的话,我的鼠标无论在那儿,钩子都工作...
      

  3.   

    先更正一下我上面回答的问题, 管理园运行与直接运行的区别在于, 你获取当前程序的路径是不一样的  这句话应该这样说 :管理园运行与直接运行的区别在于, 你获取当前程序的工作路径是不一样的。卤煮看下下面这个问题和你的是一样, 试一下下面两个方案:
    1.在win7系统中加入LowLevelHooksTimeout时间,如[HKEY_CURRENT_USER\Control Panel\Desktop]"LowLevelHooksTimeout"=dword:00002710
    2.在安装钩子尽量在一个独立的线程中进行,并且钩子处理过程尽量用较短的时间,其他任何较长时间的处理都放在别的线程中异步处理。(尽量不要写花时间的hook代码)http://www.cnblogs.com/braver/articles/2557961.html其实win7/vista下钩子失败问题有好多案例:
    http://q.cnblogs.com/q/12582/
    http://bbs.eyuyan.com/read.php?tid=225076