又来向大家请教啦。
我的程序是webform的,然后需要在后台生成word文档后让用户下载。但是现在发现有两个winword.exe进程一直杀不掉,呵呵,其实总共有三个,一个就能杀掉,另外两个就完全不行了。
后来就想说 用process.kill来解决,具体如下。
代码:
DateTime startTime = System.DateTime.Now;//记录Word进程打开的时间
...
//操作完成杀死Work进程
System.Diagnostics.Process[] processes;
processes = System.Diagnostics.Process.GetProcessesByName("WINWORD");
foreach(System.Diagnostics.Process process in processes)
{
if(startTime < process.StartTime)
process.Kill();
}
但是,当我用非管理员用户登录电脑,运行程序时就报错,说是拒绝访问。
另外我在web.config中已经定义了
<identity impersonate="true" userName="Administrator" password="Password1"/>
能有什么解决方法吗?? 最好不管用何种身份登录电脑,程序都能将winword杀掉
我的程序是webform的,然后需要在后台生成word文档后让用户下载。但是现在发现有两个winword.exe进程一直杀不掉,呵呵,其实总共有三个,一个就能杀掉,另外两个就完全不行了。
后来就想说 用process.kill来解决,具体如下。
代码:
DateTime startTime = System.DateTime.Now;//记录Word进程打开的时间
...
//操作完成杀死Work进程
System.Diagnostics.Process[] processes;
processes = System.Diagnostics.Process.GetProcessesByName("WINWORD");
foreach(System.Diagnostics.Process process in processes)
{
if(startTime < process.StartTime)
process.Kill();
}
但是,当我用非管理员用户登录电脑,运行程序时就报错,说是拒绝访问。
另外我在web.config中已经定义了
<identity impersonate="true" userName="Administrator" password="Password1"/>
能有什么解决方法吗?? 最好不管用何种身份登录电脑,程序都能将winword杀掉
{
if(startTime < processes[i].StartTime)
processes[i].Kill();
}
改了,还是拒绝访问。由于我现在不是以管理员的身份登录的电脑,但是我的web.config中定义的是管理员,是否这样才导致无法杀掉进程呢??
Proper Interop Cleanup
http://stackoverflow.com/questions/2059250/proper-interop-cleanup
Proper Interop Cleanup
http://stackoverflow.com/questions/2059250/proper-interop-cleanup