【问题标题】:Installed application doesn't have write permissions anywhere安装的应用程序在任何地方都没有写权限
【发布时间】:2013-12-05 03:43:44
【问题描述】:

我创建了一个 C# 应用程序,但没有想到所有调试都是使用管理员权限完成的,就像我在 Windows 中一直使用的那样。

现在我已经使用 WiX 创建了一个 .MSI 安装程序来安装我的应用程序,该应用程序没有对 appdata、C:\tmp 等的写入权限。

我的应用程序需要在文件系统的某处写入一些临时文件,我如何在不需要我的应用程序管理员权限的情况下实现这一点?该应用程序不执行任何需要管理员提升的操作。

【问题讨论】:

  • 您要写入的确切路径是什么?您只能写入每个用户的目录。
  • This,也许吧?
  • @slaks %appdata%\myApp(由具有权限的 wix 创建)、c:\temp、mydocs...
  • @lemon42 临时文件 我的意思是在执行特定任务之前将使用一些自定义内容创建并在执行后删除的文本文件。我还能用你的建议吗?

标签: c# permissions wix installation


【解决方案1】:

尝试使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)。您的应用程序应该始终可以访问它。

您可以尝试使用System.IO.Path.GetTempPath() 获取临时目录。

如果这不起作用,您可以尝试找到一个非系统分区并在那里创建一个隐藏文件夹。

【讨论】:

  • 如前所述,我也无权访问:S
  • 您可以尝试查找临时文件夹或在其他分区上创建隐藏文件夹。
  • 我认为这是错误的,在用户不知情的情况下创建文件夹。
【解决方案2】:

由于我只需要一个临时文件来读取和写入,因此我能够使用 Windows API 为我的应用程序获取一个临时文件

string tempFile = Path.GetTempFileName();

现在我可以随意读写tempFile的路径了。请注意,此文件在退出时会被删除,并且会为每次调用 Path.GetTempFileName() 创建一个新文件

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2017-04-12
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多