【问题标题】:Open a PDF file from C#.NET using Impersonate使用 Impersonate 从 C#.NET 打开 PDF 文件
【发布时间】:2017-06-20 11:22:23
【问题描述】:

我在服务器上有一个包含 pdf 文件的文件夹(Windows Server 2008 R2 Enterprise)。我必须使用授权用户帐户打开文件夹并在浏览器中显示 pdf 文件。该用户拥有文件夹的完全控制权限,并且是管理员组的成员。

波纹管代码在我的本地工作,因为它从位于 Adob​​e Reader 的服务器中的文件夹中打开 pdf 文件。但是在服务器上该进程没有启动(Adobe Reader 没有打开)并且没有发生异常。大多数论坛都说关闭 UAC 会有所帮助,但出于安全原因,我不想这样做。

我该如何处理这个问题?请帮忙。

try
{
    WindowsIdentity wi = new WindowsIdentity(@"user_name@DOMAIN");                
    WindowsImpersonationContext ctx = null;   

    try
    {
        ctx = wi.Impersonate();

        // Thread is now impersonating you can call the backend operations here...
        Process p = new Process();

        p.StartInfo = new ProcessStartInfo()
        {
            CreateNoWindow = true,
            Verb = "open",                        
            FileName = ConfigurationManager.AppSettings["mobil"] + "\\" + prmSicilNo + "_" + prmPeriod.ToString("yyyyMM") + ".pdf",                                            
        };

        p.Start();            
    }
    catch (Exception ex)
    {
        msj = ex.Message;
    }
    finally
    {
        ctx.Undo();
    }                             

    return msj;
}
catch (Exception ex)
{        
    return msj + "Error: " + ex.Message;
}

【问题讨论】:

    标签: c# pdf process impersonation process.start


    【解决方案1】:

    尝试在服务器上使用 Run as Adminstrator 执行您的 .exe。如果运行正常,请添加以下代码:

    p.StartInfo.Verb = "runas";
    

    【讨论】:

      【解决方案2】:

      @Chintan Udeshi谢谢你的快速回答。我可以通过Run as Administrator 运行AcroRd32.exe,但是当我尝试使用runas 时,我收到了错误消息; “没有应用程序与此操作的指定文件关联”

      我也尝试过放置绝对 Acrobat Reader 路径,但还是不行。有什么想法吗?

      p.StartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe")
      {
         CreateNoWindow = true,
         Verb = "runas",                        
         FileName = ConfigurationManager.AppSettings["mobil"] + "\\" + prmSicilNo + "_" + prmPeriod.ToString("yyyyMM") + ".pdf", // "c:\\pdf\\",                                            
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        • 2015-01-09
        • 2019-09-24
        • 1970-01-01
        相关资源
        最近更新 更多