Windows安装程序中的常见应用程序数据路

时间:2012-09-27 09:23:54

标签: c# .net windows-installer programdata

在搜索时,Windows分区中有一个名为“ProgramData”的文件夹,其中包含应用程序在运行时使用的应用程序数据。由于此文件夹不需要管理员权限,并且在系统用户之间很常见,因此它是放置运行时文件的最佳位置。在C#.Net中,我通过以下代码到达此文件夹地址:

Application.CommonAppDataPath

问题是,当我通过Visual Studio安装项目创建Windows安装程序(msi文件)时,找不到将数据放入其中的正确文件夹。 我想知道如何将此文件夹添加到我的安装项目中。

问候。

2 个答案:

答案 0 :(得分:5)

以下是添加方式:

  1. 转到"文件系统"在项目中查看并右键单击"目标计算机上的文件系统"
  2. 在"添加特殊文件夹"选择"自定义文件夹"并给它一个名字
  3. 现在右键单击该文件夹,然后选择"属性窗口"
  4. 设置" DefaultLocation"属性为:" [CommonAppDataFolder]"
  5. 现在,您可以在此新文件夹下添加所需的任何子文件夹,并在其中放置所需的文件,并将文件安装在所需的路径中。
  6. http://msdn.microsoft.com/en-us/library/windows/desktop/aa367992(v=vs.85).aspx

答案 1 :(得分:1)

我发现我的问题因为许可而对我的目的不对。我找到的解决方案是在stackoverflow.com中编写here,我在应用程序中将以下代码混合起来以获取公共文档的地址。

private static string getAddress()
    {
        RegistryKey rk = Registry.LocalMachine;
        RegistryKey sk = rk.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\Shell Folders");
        string address = "";
        if (sk != null)
        {
            address = (string)sk.GetValue("Common Documents", @"c:\Users\Public\Documents");
        }
        return address;
    }

让我们概述一下我所说的和我做了什么,首先我发现我想要的是错误的,ApplicationData文件夹只是为了它的创建者而可访问,而我想要一个在所有用户之间共享的文件夹。所以我找到了这个link并跟着它,在我的安装程序项目中的FileSystem Explorer中创建了我想要的文件夹。 然后我更改了我的C#代码并使其从注册表中读取地址。