【问题标题】:Impersonating in .net (C#) & opening a file via Process.start在 .net (C#) 中模拟并通过 Process.start 打开文件
【发布时间】:2011-05-24 06:03:56
【问题描述】:

嗨, 正如许多地方所解释的那样,我正在使用LogonUser 进行一些模拟。

(我用了here介绍的大类库,不过原理好像全网都一样)。

我已经成功模仿并去了我的“普通”用户无法到达的地方。但是,当我尝试使用Process.Start 以编程方式打开doc 文件或txt 文件或其他文件时,我收到错误

"没有足够的内存或磁盘 运行 Word 的空间。”

我可以使用我的普通用户以编程方式启动 word,但是当我尝试使用其他用户以编程方式打开特定文件时,我得到:

“访问被拒绝”。

顺便说一句,当我手动登录我的电脑时,这个其他用户有打开文件的权限。

【问题讨论】:

  • 正如我所说,这不仅仅是文字。它也是txt文件。
  • 也不要在服务器上运行记事本。你想做什么?
  • 我不想在服务器上运行它。我正在尝试打开一个文件。并且此文件位于我的普通用户无权进入的文件夹中。其他用户具有此权限。我正试图代表他以编程方式打开它。如果我有权限,我可以代表自己以编程方式进行操作。
  • 链接到错误的地方。固定。
  • 为什么需要以编程方式启动 Word/记事本?您可以使用右键单击+运行方式手动执行此操作,或者在命令行中使用runas 命令。

标签: c# .net impersonation


【解决方案1】:

这听起来像是 ProcessStartInfo.LoadUserProfile 的问题。它默认为 false,副作用是启动的进程将看到您帐户的 HKCU 注册表设置,而不是模拟的。 Office 程序不会这样。

请注意,您还必须将 UseShellExecute 设置为 false 才能使此设置生效。这将妨碍您通过简单地将 .doc 文件作为文件名来启动 Word。您需要改用“winword.exe”。

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2014-05-30
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多