用WINWORD打开磁盘doc文件,怎么设置doc文件读,写,执行,另存为权限呢?
System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "C:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.exe";
            String path = "E:\\minganfile.doc";
           // path = '"' + path + '"';
            p.StartInfo.Arguments = @path;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.CreateNoWindow = true;
           // p.StartInfo.EnvironmentVariables = saveFileDialog1.FileName;
           
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            p.Start();
            //System.Diagnostics.Process.Start("E:\\a.utt");
            p.WaitForExit();
            return p.StandardOutput.ReadToEnd();C#OfficeWord

解决方案 »

  1.   

    那就别用Process,用微软提供的操作office的dll操作
      

  2.   

    我看了好多关于微软的office开发 ,始终不怎么理解 ,望详解
      

  3.   

    子进程默认会继承当前进程的读写权限(ACL访问令牌权限)
    用WIN API可以实现,但是你的程序本身必须具备较高权限
    用Office for .Net开发组件(装了VS就有)或者com吧
      

  4.   

    你说的是IRM保护文档还是说的文件的访问权限?另存为权限是什么权限?word文件能执行吗?
      

  5.   

    //在项目引用里添加上对Microsoft Word 11.0 object library的引用  
     
     
    //调用打开文件对话框获取要打开的文件WORD文件,RTF文件,文本文件路径名称  
    OpenFileDialog opd = new OpenFileDialog();  
    opd.InitialDirectory = \"c:\\\\\";  
    opd.Filter =   
    \"Word文档(*.doc)|*.doc|文本文档(*.txt)|  
    *.txt|RTF文档(*.rtf)|*.rtf|所有文档(*.*)|*.*\";  
    opd.FilterIndex = 1;  
     
    if (opd.ShowDialog() ==   
    DialogResult.OK && opd.FileName.Length > 0)  
    {  
     
    //建立Word类的实例,缺点:不能正确读取表格,图片等等的显示  
    Word.ApplicationClass app = new Word.ApplicationClass();  
    Word.Document doc = null;  
    object missing = System.Reflection.Missing.Value;  
     
    object FileName = opd.FileName;  
    object readOnly = false;  
    object isVisible = true;  
    object index = 0;  
    try 
    {  
    doc = app.Documents.Open(  
    ref FileName, ref missing, ref readOnly,  
    ref missing, ref missing,   
    ref missing, ref missing, ref missing,  
    ref missing, ref missing,   
    ref missing, ref isVisible, ref missing,  
    ref missing, ref missing, ref missing);  
     
    doc.ActiveWindow.Selection.WholeStory();  
    doc.ActiveWindow.Selection.Copy();  
    //从剪切板获取数据  
    IDataObject data=Clipboard.GetDataObject();  
    this.richTextBox1.Text=  
    data.GetData(DataFormats.Text).ToString();  
     
    }  
    finally 
    {  
    if (doc != null)  
    {  
    doc.Close(ref missing, ref missing, ref missing);  
    doc = null;  
    }  
     
    if (app != null)  
    {  
    app.Quit(ref missing, ref missing, ref missing);  
    app = null;[Page]  
    }  
    }   
    }