我曾对类似问题的一些答案进行过侦察,但他们并没有真正帮助我。写入appdata文件夹 - 权限问题?
我有一个应用程序,我已经嵌入了一些资源。在启动时,应用程序将检查appdata文件夹中是否存在资源,如果不是将模板文件从嵌入资源复制到appdata文件夹,然后加载它们,然后使用appdata文件夹中的模板文件作为工作副本。
我有一个辅助类,除其他事项如下返回应用程序数据和资源的子文件夹:
class Folders
{
static public String GetUserFolder()
{
return Application.LocalUserAppDataPath;
}
static public String GetResourcesFolder()
{
// If the resources folder does not exist then create it
String userFolder = GetUserFolder();
String resourcesFolder = userFolder + "\\Resources";
if (!Directory.Exists(resourcesFolder))
{
Directory.CreateDirectory(resourcesFolder);
}
return resourcesFolder;
}
...
所以我的代码调用GetResourcesFolder方法,它返回的路径(在此过程中创建文件夹,如果需要到)会检查文件是否存在,如果不尝试它来写东西用它喜欢:
String filename = Helpers.IO.Folders.GetResourcesFolder() + "\\data.dat";
FileStream outFile = System.IO.File.OpenWrite(filename);
所以我给自己定的场景,这个代码工作在所有的机器,我在开发办公室。然而,一些非现场的同事抱怨说他们的机器“崩溃” - 每种情况下都是一台XP机器 - 但是没有很多有用的信息从他们那里回来 - 试图从他们那里获得更多的信息。我在办公室使用了XP机器,而且没有任何问题。
在挖掘出前段时间“归档”的一些真正的旧开发机器之后,我也成功地在两台xp(sp2)机器上发生了故障。在这两种情况下,崩溃似乎都与写入权限有关,并使用“运行方式...”运行应用程序已解决该问题并正确执行。但是,一旦应用程序成功运行,一旦应用程序不再崩溃,即使我删除了从appdata文件夹创建的文件/文件夹,即使我没有提升权限,它仍然会在后续执行中创建成功。
我现在的问题是,我现在不能在任何可用的开发机器上重复崩溃,我不知道如何将机器放回到可以使用的状态。
任何人都可能对导致问题的原因有任何想法,或者我可以如何将机器返回到“处女”状态,以便能够重复崩溃并帮助我追踪它。
我注意到,有时如果我将exe文件复制到有问题的机器上的其他位置,然后运行它,我现在可以重复这个问题(问题是一个不受监视的SecurityException),但是如果我运行调试代码从Visual Studio中不会发生问题 - Visual Studio是否使用提升的权限运行代码? –
我可以推荐使用'Path.Combine(GetUserFolder(),“Resources”);' – aligray