此类情况大概是安全范畴的问题
确定上传文件夹的共享,iis 以及电脑帐户,以及aspnet 等是否有对应的相关权限
1.确认ASPNET 账户属于管理员级别
2.在“服务”里面找到“IIS Admin”,双击,“登录”,勾选“服务与桌面交互”。重启iis。
只要这样设置,不要去模拟administrator用户来调用iis方法了,使用匿名访问就可以了。但是为了安全起见,建议还是加上用户验证
3.用webservice 调用;
[WebService(Namespace=http://tempuri.org/)]
[WebServiceBinding(ComformsTo=Wsiprofiles.BasicProfile1_1)]
public class WebService:System.Web.Services.WebService
{
[DllImport("shell32.dll")]
public static extern int ShellExecute(IntPtr hwnd,StringBuilder lpszOp,stringBuilder lpszFile,StringBuilder lpszParams,StringBuilder lpszDir,int FsShowCmd);
public WebService()
{
}
[WebMethod]
public void HelloWorld(string text)
{
ShellExecute(Intptr.Zero,new StringBuilder("Open"),new stringBuilder(text),null,null,1)
}
}
调用
WebService ws=new WebService();
ws.HelloWord("a");
4. WebService 中方法解释
ShellExecute的功能是运行一个外部程序(或者打开一个已注册文件,打开一个目录,打印一个文件等等)并对外部程序有一定的控制。
参数介绍:《"参数一","参数二","参数三","参数四","参数五","参数六"》
hWnd{指定父窗口句柄}
Operation{动作,譬如 open,print}
FileName:{指定要打开的文件或者程序}
Paramters:{给要打开的程序指定参数}
Directory:{缺省目录}
showCmd(打开选项)
执行成功会返回应用程序句柄,如果返回值<32 表示执行错误
例子:调用计算器
ShellExecute(NULL,"open","calc.exe",Null,Null,SW_SHOWNORMAL)
调用记事本
ShellExecute(NULL,"open","NOTEPAD.exe",NULL,NULL,SW_SHOWNO)
最后的那个参数,为窗口指定可视性方面的一个命令。
请用下述任何一个常数
SW_HIDE 隐藏窗口,活动状态给另一个窗口
SW_MINIMIZE 最小化窗口,活动状态给另一个窗口
SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
方法二
获取文件所在的目录
然后转义
eg :string text = txt_MH011.Text.Substring(txt_MH011.Text.IndexOf("CAR")).Replace(@"\","/");
原目录为"C:\\CAR\\ASP||" 经上述操作后 可以得到 CAR/asp/ 路径
Response.Write("<script> window.open('" + text + "');</script>"); 打开该路径即可,以浏览器的方式打开文件所在的文件夹
效果显示
可以直接让用户打开该文件所在的文件夹,该方法已测试