在可执行文件所在的安装目录中写入临时文件时,我的应用程序抛出"拒绝访问"错误.但是它在Windows XP中运行得非常好.如何在Windows 7中提供对Program Files目录的访问权限?
编辑:如何让程序要求用户提升权利?(即运行具有完全管理员权限的程序)
Ger*_*ies 88
您的程序不应将临时文件(或其他任何内容)写入程序目录.任何程序都应将%TEMP%用于临时文件,将%APPDATA%用于特定于用户的应用程序数据.从Windows 2000/XP开始就是如此,所以你应该改变你的应用程序.
问题不是Windows 7.
你可以要求appdata文件夹路径:
string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Run Code Online (Sandbox Code Playgroud)
或者用于TEMP路径
string dir = Path.GetTempPath()
Run Code Online (Sandbox Code Playgroud)
Jos*_*eph 27
您的程序必须使用管理权限运行.您无法使用代码自动执行此操作,但您可以请求用户(在代码中)在程序运行时提升程序的权限.有关如何做到这一点的维基.或者,通过右键单击其图标并单击"以管理员身份运行",可以以管理员身份运行任何程序.
但是,我不建议这样做.最好使用这样的东西:
Environment.GetFolderPath(SpecialFolder.ApplicationData);
Run Code Online (Sandbox Code Playgroud)
获取AppData文件夹路径并为您的应用程序创建一个文件夹.然后将临时文件放在那里.
在项目中添加新项目:Application Manifest并保存.
现在打开这个文件并查找<requestExecutionLevel>.它必须设置为asInvoker.
将其更改为highestAvailable.现在,在执行您的应用程序时,将出现一个要求许可的提示.点击yes!
多数民众赞成:)现在您可以从system32或任何其他需要管理员权限的文件中进行编写和读取
您可以通过sigcheck验证您的申请.
sigcheck.exe -m yourapp.exe
Run Code Online (Sandbox Code Playgroud)
并在输出检查元素requestedExecutionLevel.