在 Windows 7 上创建文件会导致“拒绝访问”异常

Posted

技术标签:

【中文标题】在 Windows 7 上创建文件会导致“拒绝访问”异常【英文标题】:Creating file on Windows 7 causes "Access denied" exception 【发布时间】:2012-10-04 07:29:57 【问题描述】:

我有一个 Java 应用程序,用户可以使用此代码创建一个文本文件并将其保存在计算机上的任意位置:

File txtFile = new File( path );
Writer writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( txtFile ), "UTF-8" ) );  // Error occurs here.

但许多使用 Windows 7 的用户报告说,将文件保存到 “C:\” 时,他们会收到“Access is denied”错误。我发现这是因为他们需要管理员权限才能在 Win7 中将文件保存在这样的路径中。

除了向用户显示警告消息:“您无法将文件保存在此路径”之外,我可以以某种方式将文件保存在此路径中,就像有办法通过 Java 代码或类似的方式在 Win7 中拥有管理员权限?

【问题讨论】:

【参考方案1】:

简短的回答 - 不。

如果你需要保存到C盘,他们需要权限。如果这个程序只需要创建文件,你可以使用用户临时文件夹。请参阅 System.getProperty()

【讨论】:

【参考方案2】:

Windows Vista 和 Windows 7 启用了 UAC。 UAC 拒绝在某些位置创建新文件,没有管理权限。

检查您的权限并确保在 ADMINISTRATIVE 帐户中执行 java 可执行文件,或禁用 UAC。

为此,请转到“开始”,在“CMD.EXE”中键入 -> 右键单击​​ cmd.exe 文件并以管理员身份运行。然后导航到包含 .class 文件的位置。然后输入java ClassFile 并回车

【讨论】:

【参考方案3】:

您是否使用 cmd ,即 Dos 来运行您的文件或 eclipse?无论您使用什么 看起来您正在以默认用户身份运行。 在 Windows 7 中,默认情况下 UAC 将写入 system.directory。

执行以下操作,希望它会起作用1

> If cmd.exe
>      Then when you open run from start menu. Right click it, select run as administrator and  then run your application
>     
>     If eclipse/any other IDE
>     
>     Close existing, right clicl eclipse,select run as admim and then run your application
> 
> Hope this helps

【讨论】:

请注意缩进,我正在使用电话回复.. :-)

以上是关于在 Windows 7 上创建文件会导致“拒绝访问”异常的主要内容,如果未能解决你的问题,请参考以下文章

无法访问文件

使用 .htaccess 拒绝访问目录中的所有 PHP 文件

在 Windows 7 上模拟

windows 2008 r2,打开C盘的文件,提示拒绝访问。

如何使用 PHP 和 IIS 7 访问映射网络驱动器中的文件

如何修复 CopyFile() 错误 5 - 拒绝访问错误