自Win Vista发布以来,微软为以32位进程运行的传统应用程序引入了文件虚拟化.作为Microsoft用户帐户控制(UAC)的一部分发布,尝试写入受操作系统保护的任何位置的任何遗留应用程序都将重定向到VirtualStore.
此时,已采取措施确保有问题的应用程序现在作为支持UAC的64位进程运行,但是,这对解决将用户数据迁移到被认为是安全的虚拟化位置的问题几乎没有作用.
在解决此问题时,我发现在处理多个用户帐户时,在位于C:\ Program Files(x86)\ MyApp\Data的旧路径中进行了一些更改,同时,已对VirtualStore位于%localappdata%\ VirtualStore\Programs\MyApp\Data.问题是,如何检测是否正在进行任何文件/文件夹虚拟化以及如何合并这两个位置?
编辑:我发现几个网站详细说明了问题以及如何复制它,但没有包含修复方法.我确实找到了这个参考文件FILE_ATTRIBUTE_VIRTUAL来定义一个看起来很有希望的文件属性 - 我在某个地方找到了另一个引用,虽然我不记得在哪里,这表明这是Windows使用的属性,表明正在进行文件虚拟化并标记请求重定向.
这些链接描述了这个问题:
http://www.c-sharpcorner.com/uploadfile/GemingLeader/windows-file-and-registry-virtualization/
http://www.codeproject.com/Articles/66275/Windows-Vista-File-and-Registry-Virtualization
当我看到一篇文章时,我正在寻找一种解决方案,为我的最新项目提供日志记录(http://www.daveoncsharp.com/2009/09/create-a-logger-using-the-trace-listener-in- csharp /)谈到使用System.Diagnostics和App.config通过Trace方法进行记录.我能够成功实现类和App.config,但我真的希望能够动态分配日志文件的值/位置(在initializeData内),我不知道如何做到这一点.如果您有任何建议,请随时发布!
App.config中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="fileSizeThreshold=512, fileSizeUnit=kilobytes,
fileAgeThreshold=1, fileAgeUnit=months, fileNameTemplate='{0}\MyApp-{1:MMM-yy}.log'"/>
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)
记录器类:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
namespace MyCurrentProject
{
class Logger
{
public void Error(string module, string message)
{
WriteEntry(message, "ERROR:", module);
}
public void Error(Exception ex, string module)
{
WriteEntry(ex.Message, "ERROR:", module);
}
public void Warning(string module, string message)
{
WriteEntry(message, "WARNING:", module); …Run Code Online (Sandbox Code Playgroud) 据我所知,grep -c string可以用来计算给定字符串的出现次数.我想要做的是计算只有部分字符串已知或保持不变时唯一出现的次数.
例如,如果我有一个文件(在这种情况下是一个日志),其中有几行包含一个常量字符串和一个重复变量,如下所示:
string=value1
string=value1
string=value1
string=value2
string=value3
string=value2
Run Code Online (Sandbox Code Playgroud)
我希望能够识别每个唯一集合的数量,其输出类似于以下内容:(理想情况下使用单个grep/awk字符串)
value1 = 3 occurrences
value2 = 2 occurrences
value3 = 1 occurrences
Run Code Online (Sandbox Code Playgroud)
有没有人有使用grep或awk可能有效的解决方案?提前致谢!