【问题标题】:want to modify a file under Program Files with Win7想用Win7修改Program Files下的文件
【发布时间】:2011-06-19 08:29:19
【问题描述】:

我有一个小的 C# 程序来修改位于Program Files 下的 xml 文件。该机器是Windows 7 机器。这个小程序是由一个批处理文件(称为A.bat)启动的,因为我想向它传递一个参数。

我有一个主批处理文件(称为M.bat),它是起点。 M.bat 将启动安装程序并等待安装完成。然后M.bat 将启动A.bat,它将启动我的带有参数的小程序。

现在我得到以下异常:

System.UnauthorizedAccessException: Access to the path 'C:\Program Files\MyTest\Test.config' is denied.

我知道这是由 Win7 中更严格的安全性引起的。它在 XP 下运行良好。

我无法使用“以管理员身份运行”启动M.bat 或手动“以管理员身份运行”启动A.bat,因为两者都会报告找不到目标可执行文件(因为启动位置并不是真正的“当前”位置然后)。

有没有办法在批处理文件中以管理员身份启动可执行文件?还是在 C# 程序中我可以给自己管理员权限?

或者...

【问题讨论】:

  • 我真的不知道你在这里问什么。未经用户许可,应用程序和批处理文件都不能将其权限提升为管理员。你已经知道这就是问题所在。尝试修复代码中阻止您使用“以管理员身份运行”的错误,即不假设特定的开始位置,难道不是更好吗?

标签: c# .net scripting windows-7 batch-file


【解决方案1】:

您应该在程序启动时请求管理员权限。看this sample

【讨论】:

    【解决方案2】:

    不是以对用户不可见/隐藏的方式...我建议找到一种方法使其在以管理员身份运行时工作。或者您可以设置应用程序清单(参见:http://www.enusbaum.com/blog/2007/08/26/how-to-run-your-c-application-as-administrator-in-windows-vista/)以管理员身份运行您的应用程序,这也可以。

    归根结底,除非您以管理员身份运行,或者除非您的用户关闭 UAC(根本不推荐),否则您无法以管理员权限运行。

    【讨论】:

      【解决方案3】:

      您需要通过 UAC 提示提升您的权限。按照this answer 中的说明将清单添加到您的程序中。

      【讨论】:

        猜你喜欢
        • 2011-07-09
        • 1970-01-01
        • 2015-04-28
        • 1970-01-01
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-14
        相关资源
        最近更新 更多