大师级人物请进,超级棘手问题。献上100分。不够再加

问题描述

此问题违反C#版关于标题的规定,问题移到非技术区,提问者禁言10天。此问题提问者见到此信息后可以根据C#版置顶公告提示举报其他违规者提前解除禁言。版主:老实说这个禁言只是象征性的,因为这个问题除了标题之外其他的部分到也没什么问题。我想大家都能理解LZ的心情,但是LZ,就算这个论坛充斥着一大堆低级问题,你可以对你的问题作出评价,界定范围,但是在标题中说明问题是你作为提问者的义务。我们在web服务器(iis)上部署了webservice,它所实现的功能是远程关闭计算机,当我在服务器上通过.net2005调试该webservice时可以正常关闭计算机,可是无论我在客户端还是在服务器本身直接访问该webservice时,均无法实现正常关机。我通过vs2005直接调试iis上的该webservice代码全部是按照正确的方式执行,可是结果却是不能关机。。。关机代码类文件如下所示:引用:usingSystem.Runtime.InteropServices;///<summary>///shutdown_pc的摘要说明///</summary>publicclassshutdown_pc{[StructLayout(LayoutKind.Sequential,Pack=1)]privatestructTokPriv1Luid{publicintCount;publiclongLuid;publicintAttr;}[DllImport("kernel32.dll",ExactSpelling=true)]//GetCurrentProcess函数返回当前进程的一个句柄privatestaticexternIntPtrGetCurrentProcess();[DllImport("advapi32.dll",ExactSpelling=true,SetLastError=true)]//OpenProcessToken函数打开一个进程的访问代号privatestaticexternboolOpenProcessToken(IntPtrProcessHandles,intDesiredAccess,refIntPtrTokenHandle);[DllImport("advapi32.dll",SetLastError=true)]//LookupPrivilegeValue函数获得本地唯一的标示符(LUID),用于在特定的系统中//表示特定的优先权。privatestaticexternboolLookupPrivilegeValue(stringlpSystemName,stringlpName,reflonglpLuid);//AdjustTokenPrivileges函数允许或者禁用指定访问记号的优先权。//允许或者禁用优先权需要TOKEN_ADJUST_PRIVILEGES访问权限。[DllImport("advapi32.dll",ExactSpelling=true,SetLastError=true)]privatestaticexternboolAdjustTokenPrivileges(IntPtrTokenHandle,boolDisableAllPrivileges,refTokPriv1LuidNewState,intBufferLength,IntPtrPreviousState,IntPtrReturnLength);//ExitWindowsEx函数可以注销,关机或者重新启动系统[DllImport("user32.dll",ExactSpelling=true,SetLastError=true)]privatestaticexternboolExitWindowsEx(intflg,intrea);privateconstintSE_PRIVILEGE_ENABLED=0x00000002;privateconstintTOKEN_QUERY=0x00000008;privateconstintTOKEN_ADJUST_PRIVILEGES=0x00000020;privateconststringSE_SHUTDOWN_NAME="SeShutdownPrivilege";privateconstintEWX_LOGOFF=0x00000000;//注销privateconstintEWX_SHUTDOWN=0x00000001;//关机privateconstintEWX_REBOOT=0x00000002;//重启privateconstintEWX_FORCE=0x00000004;privatestaticvoidRebootCommand(intflg){boolok;TokPriv1Luidtp;IntPtrhproc=GetCurrentProcess();//得到当前的进程IntPtrhtok=IntPtr.Zero;ok=OpenProcessToken(hproc,TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,refhtok);tp.Count=1;tp.Luid=0;tp.Attr=SE_PRIVILEGE_ENABLED;ok=LookupPrivilegeValue(null,SE_SHUTDOWN_NAME,reftp.Luid);ok=AdjustTokenPrivileges(htok,false,reftp,0,IntPtr.Zero,IntPtr.Zero);ok=ExitWindowsEx(flg,0);}///<summary>///关闭计算机///</summary>publicstaticvoidCloseComputer(){RebootCommand(EWX_SHUTDOWN+EWX_FORCE);}///<summary>///注销计算机///</summary>publicstaticvoidLogOutComputer(){RebootCommand(EWX_LOGOFF+EWX_FORCE);}///<summary>///重启计算机///</summary>publicstaticvoidReStartComputer(){RebootCommand(EWX_REBOOT+EWX_FORCE);}///<summary>///获得系统已运行的时间,返回秒数///</summary>///<returns>返回秒数</returns>publicstaticintGetRunSecondTime(){inttime=Environment.TickCount/1000;returntime;}}webservise代码如下:///<summary>///2.4.3关闭计算机接口///</summary>[WebMethod]publicstringshutdown_computer(){shutdown_pc.CloseComputer();return"ok";}首先是调用webservices接口,执行时接口再调以上类文件关机的方法

解决方案

本帖最后由 Ivony 于 2008-04-18 21:05:16 编辑
解决方案二:
用winserviceweb操作不了
解决方案三:
友情UP
解决方案四:
不是WEBSERVICES操作不了的问题啊我在。NET环境下也是调的WEB就可以正常关机的啊
解决方案五:
...iis对win系统操作有很大限制,就是防止你种HK行为,就算通过web删除个文件还得要权限呢.winservice就不会这种限制总之就是权限如果你能把web行为模拟为administrator这种用户角色的话就可以执行
解决方案六:
不是大师级...飘过
解决方案七:
你的IIS用什么帐号运行呢?先确定是否它的权限不足.
解决方案八:
权限问题,如果你设置IIS访问时使用Administrator权限的话,保证你能关机,呵
解决方案九:
引用7楼boblaw的回复:

权限问题,如果你设置IIS访问时使用Administrator权限的话,保证你能关机,呵

解决方案十:
windows权限问题只做过winfrom的`
解决方案十一:
支持一下。
解决方案十二:
处男路过.....
解决方案十三:
飘过.........................

时间: 2024-10-09 19:13:21

大师级人物请进,超级棘手问题。献上100分。不够再加的相关文章

专家请进,C#的图片上传

问题描述 我想在C#里实现图片和文字的一块上传,用一个button来实现,怎么弄,能不能说的详细点,我是新手! 解决方案 解决方案二:帮你顶下!解决方案三:C/S:B/S:解决方案四:在button事件中,先把文件上传保存到服务器端,接着再将信息存储到数据库的表中.解决方案五:是想合成一个image上传,还是要分开成上传到一块啊...你看下给image写文件注释试试..

在用存储过程做分页搜索有点问题,请大家帮忙!分不够再加!

问题描述 存储过程:ifExists(SelectnameFromsysobjectsWherename='csp_Paging'Andtype='P')DropProceduredbo.csp_PagingGo/**临时表分页SP.*/CreatePROCdbo.csp_Paging@PageSizeINT=20,@PageIndexINT=1,@DoCountBIT=0,@keyWordvarchar(200),@inputtypevarchar(100)ASSETNOCOUNTONIF@D

超级简单问题, 解决了 100分 相送! 在线等待!

问题描述 protectedvoidPage_Load(objectsender,EventArgse){Stringstr="Response.Write("<h1>成功了!</h1>")";//怎么运行str这个字符串中的代码?}怎么样我的想法有创意吧就是要运行字符串(字符串本身就是c#代码)这样可以让程序更加灵活! 解决方案 解决方案二:js里有eval...C#不知道..解决方案三:stringstr="<h1>

微积分-vc 数字图像处理高手请进!

问题描述 vc 数字图像处理高手请进! 图像的梯度锐化 看到上面的公式,我叫一个晕,请问这是哪里才能学到呀?什么意思呀?还需要学习微积分吗? 解决方案 这个公式你仔细琢磨就懂了,第一个实际上是数字的差分,求得是点(i,j)的x和y方向的微分值的和,这里理解为这个像素点的梯度值.第二个就是锐化的过程,当梯度值大于某个阈值时,锐化的结果即此点的梯度值,若梯度小于那个阈值,则锐化的结果是原像素的值. 像这类比较基础的图像处理方法,建议你看一下清华大学章毓名教授写的<图像工程>. 解决方案二: 数字图

eclipse-Eclipse常用技巧,Android大神请进!

问题描述 Eclipse常用技巧,Android大神请进! Eclipse中我用类名申明了一个对象,然后类中用到了这个类对象,怎么从这个类对象进入到那个类中啊,我看到别人双击一下怎么就进去了,求大神帮我,谢谢! 解决方案 你将光标移动到这个类实例上,然后按ctrl+鼠标左键点击,或者是shift,你自己试试 如果回答对您有帮助,请采纳 解决方案二: 按住ctrl,然后鼠标点击 解决方案三: ctrl+双击 亲 网上搜一下 eclipse 快捷键大全 上面全有 如果点不进去就是找不到 那个类了 你

求翻校内的墙,大神请进

问题描述 求翻校内的墙,大神请进 我所在的公司设置了网络墙,只能上规定的几个网站,其余的如知乎,豆瓣, 天涯之类的网站上不去,求破解. 解决方案 vpn搞起,豆荚加速器 解决方案二: vpn呀,翻墙神器,连不能看的网站都能上 解决方案三: http://bbs.liebao.cn/forum.php?mod=viewthread&tid=255579 解决方案四: 推荐蓝盾,可以翻墙,赛风可以修改VPN,都可以 解决方案五: 你可以使用VPN呀,这样什么网站都能上了 解决方案六: 下载green

adb-android的大牛请进,万分感激

问题描述 android的大牛请进,万分感激 手机连接电脑成功 通过运行cmd,输入adb shell成功之后,进入到指定的apk存放路径输入adb install -r *.apk 安装指定的apk文件 最后提示 device not found,既然能进入adb,为何还会提示该语句,如何解决,请各位android大牛解答,万分感激 解决方案 你进入到SDK安装目录的/sdk/platform-tools目录下,然后用管理员权限打开当前目录下的CMD,输入:./adb device,要是还没有

线程-懂java中lock锁的请进

问题描述 懂java中lock锁的请进 package thread; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class Foo { private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); private final Lock r = r

js-真心求教一个问题,关于编写web的外挂工具app或者桌面程序,具体请进,真心谢谢了

问题描述 真心求教一个问题,关于编写web的外挂工具app或者桌面程序,具体请进,真心谢谢了 我编写的过程中遇到一些疑惑不知道如何解决,所以特来真心求教,万望解惑,如果有描述不对或者很low,请谅解. 一个最具体的例子:像前两年12306抢票只能用网页来抢,没有app或者桌面程序,很多朋友都根据12306网站编写了外挂app或者桌面程序,避免老得打开个浏览器. 目前我也想做类似的事情,根据某个http的Web网站写个外挂app或者程序,作为一个程序员,我大致也知道大致的流程是:拼接url->发起