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

时间:2012-10-13 20:34:13

标签: java windows-7 access-denied

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

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

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

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

3 个答案:

答案 0 :(得分:3)

简短回答 - 不。

如果需要保存到C盘,则需要权限。如果此程序只需要创建文件,则可以使用用户临时文件夹。请参见System.getProperty()

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

您是否正在使用cmd,即Dos来运行您的文件或日食?无论你使用什么 看起来您正在以默认用户身份运行。 在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