我编写了一个批处理文件,用于在 C: 驱动器根文件夹中创建一个文件。但是,如果以普通用户身份登录,则不会创建该文件,并且我会收到“访问被拒绝”错误。
我怎样才能避免这个问题?
答案1
用户无权写入驱动器的根目录。您需要在用户有写入权限的位置创建文件。例如,他们的应用程序数据文件夹。C 驱动器的根目录通常被锁定,以防止您写入,因为这样做不是最佳做法。
如果您确实必须写入驱动器的根目录,请编辑驱动器的 NTFS 权限以允许用户写入。但请注意,这不是一个好方法。
答案2
如上所述,使用%温度%或者%四甲基膦酸%如果文件不需要跟踪/保存,则建议使用。如果不是,我只会使用%用户资料%(c:\Documents and Settings\normal) 其中“normal”是您的用户名...因为如果您没有访问根目录的正确权限,那就是放置它最简单/最合乎逻辑的位置。%USERPROFILE%\桌面如果您希望将其放在桌面上以方便访问。
答案3
%appdata%
您可以使用通常可以写入的路径(例如或 ) ,而不是使用“硬编码”路径%UserProfile%
。在那里,您可以创建一个文件或最好是一个文件夹/目录,供批处理文件使用。
或者,您可以让用户指定要使用的绝对文件名。
如果您确实需要管理员权限,您可以runas
在脚本中使用命令(例如使用 savecred)。
答案4
我完全同意这里所说的内容。此外,我认为%UserProfile%
有时不是放置临时文件的首选位置。相反,您可以使用%TEMP%
来处理此类事情。对于需要永久提供给用户的数据,您可以使用%AppData%\someFolderName
。 的主要优点%AppData%
是,如果在公司环境中启用了漫游配置文件,它还可以漫游到其他计算机。
请记住,这也是%TEMP%
特定于用户的。因此,每个登录系统的用户都将拥有自己的临时文件,该文件不会共享。如果您需要在多个用户之间共享文件,则应考虑将文件放在%PUBLIC%
计算机上所有用户都可以访问的位置。