.NET调用API的问题追踪

前一段时间碰到一个问题 ,就是想通过.NET服务器端程序对服务器某一应用程序进行截屏。截屏的功能不难,网上也有很多源码。这当然要牵扯到调用API。一般来讲,.NET调用API是可以的,但问题就出现在,当.NET程序运行在调式状态时,正常截屏是可以的,但普通运行状态,发现截屏都是全黑的。

开始就怀疑是权限问题,我想到了服务程序里有个概念是“与桌面交互”,所以试图对IIS服务加上“与桌面交互”选项,以使得其具有截屏权限。这个尝试未能解决问题。

后来又想到IIS进行是以ASPNET帐户运行的,也许是ASPNET帐户权限不够,所以就想试图让IIS进行以其他具有高权限的帐户登录。发现这样会导致IIS服务无法启动。

接下来还尝试过让.NET调用COM DLL,COM EXE(考虑到EXE运行在不同进行,应该有不同的权限),甚至是COM SERVICE,结果都和以前一样,调试时可以,运行时不行。

经过仔细分析,发现调试时,WEB SERVER的登录帐户是管理员,而运行时其登录帐户是ASPNET,这更让我们确信是权限问题。

经过多方查找,最终从网上得知,.NET调用普通的API还有DLL是可以的,但对与屏幕操作有限制。如何解决呢?

最终想到了.NET的配置文件,令人失望的是,改了配置文件,让其以管理员权限执行还是不行。功夫不负有心人,最终查到了IIS 5.1会忽略一些配置文件中的字段。升级到6.0以上就可以解决?可我们目前的测试及其是XP,好像不能装6.0呀?抱着试试看的态度,插入Windows Server 2003安装盘,重新安装ISS,好像一切顺利。

修改machine.config文件:

< processModel  autoConfig ="true"   userName ="System"  password ="AutoGenerate" />

将IIS登录用户改为System,程序运行一切正常。问题解决。

这里写出来,希望对遇到类似问题的人有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值