继上一个问题之后,我正在使用UNC路径从Vista机器上创建Server 2008上的符号链接.我可以创建链接就好了.我可以转到Server 2008框并双击资源管理器中的链接以打开目标文件.但我不能做的是使用FileCreateW来获取UNC路径链接的句柄(来自Vista框).当我尝试它时,它失败并且GetLastError()返回错误代码1463(0x5B7),这是:
无法遵循符号链接,因为其类型已禁用.
如何在Server 2008中启用其"类型"(假设错误意味着它所说的)?
设计模式的概念来自哪里,谁决定什么是什么,不是模式,给他们起名字?是否有一个官方组织定义它们,或者它们是否通过一些社区共识存在?
我正在考虑创建一个基于GUI的工具,我想要跨平台.我已经解雇了Java,因为我个人不喜欢Swing.我正在考虑使用C#并使用Mono来实现跨平台.但是我想知道像Ruby这样的新型跨平台语言能否为我提供一个不错的GUI开发环境.
是的OpenID认证用户的安全方法的网站上?
如果没有,与OpenID相关的安全风险是什么?
是否可以使用c#7在switch语句中使用模式匹配的元组,如下所示:
switch (parameter)
{
case ((object, object)) tObj when tObj.Item1 == "ABC":
break;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说tObj does not exist in the current context.
我也试过这个:
switch (parameter)
{
case (object, object) tObj when tObj.Item1 == "ABC":
break;
}
Run Code Online (Sandbox Code Playgroud)
这很好用:
switch (parameter)
{
case MachineModel model when model.Id == "123":
break;
}
Run Code Online (Sandbox Code Playgroud) Windows 6(Vista和Server 2008)支持正确的符号链接,可以通过CreateSymbolicLink函数创建.但似乎没有相应的函数来询问符号链接以获得链接目标的路径.
我发现符号链接是重新分析点的实现,因此重新分析点函数可用于获取目标路径.但我需要使用重新分析点的头文件似乎与Windows驱动程序工具包一起提供.使用VS2008设置此套件似乎是一项非常重要的任务.
有没有一个很好的简单函数,我错过了获取链接的目标,或者我是否真的必须设置一个Windows驱动程序开发环境只是为了编写代码来访问这些信息?
编辑:Adam Mitz提出了GetFinalPathNameByHandle的建议.此函数适用于本地符号链接,但似乎不适用于解析远程链接(通过UNC路径).
编辑2:在亚当的要求下,这里有更多关于我尝试过的细节:
我最初走了FSCTL_GET_REPARSE_POINT/ DeviceIoControl路线,但这产生了一个REPARSE_DATA_BUFFER结构.定义此结构的标头似乎仅存在于Windows驱动程序工具包中.
GetFinalPathNameByHandle()当链接存在于本地磁盘(C:\...\link等)上时工作正常.奇怪的是,我发现我可以获取链接的句柄 - 从而获得目标 - 使用CreateFileW()是否FILE_FLAG_OPEN_REPARSE_POINT指定了标志,无论目标文件是否存在.
当CreateFileW()和GetFinalPathNameByHandle()(\\?\UNC\....)用于通过()询问远程链接时,事情开始解开.如果FILE_FLAG_OPEN_REPARSE_POINT指定,则GetFinalPathNameByHandle()始终返回链接路径,而不是目标路径.如果FILE_FLAG_OPEN_REPARSE_POINT未指定,则返回目标路径,但仅当目标存在且与链接位于同一台计算机上时才返回.如果链接指向另一台计算机,则会收到网络权限错误.如果链接指向本地 - 不存在 - 文件,我得到一个文件未找到错误.
使用I为接口名称添加前缀的.NET标准似乎正在变得普及,并且不再仅限于.NET.我遇到了很多使用这种约定的Java代码(因此,如果Java在C#之前使用它,它就不会让我感到惊讶).Flex也使用它,依此类推.虽然在名字的开头放置一个I有点匈牙利符号,所以我对使用它感到不舒服.
所以问题是,是否存在一种表示Something是接口而不是类的替代方式,无论如何都需要表示它.或者它是否成为一个标准,所以我应该接受它并停止通过建议以不同的方式做出"宗教战争"?
我有以下扩展类:
public static class MatcherExtensions
{
public static ExecMatcher<T1, T2> Match<T1, T2>(this Tuple<T1, T2> item)
{
return new ExecMatcher<T1, T2>(item.Item1, item.Item2);
}
public static ExecMatcher<T1, T2> Match<T1, T2>(this ITupleMatchable<T1, T2> item)
{
var tuple = item.PropertiesToMatch;
return new ExecMatcher<T1, T2>(tuple.Item1, tuple.Item2);
}
public static ExecMatcher<T> Match<T>(this T item) { return new ExecMatcher<T>(item); }
}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个元组并调用Match()它,它正确使用第一个扩展方法:
var tuple = Tuple.Create(1, "a");
tuple.Match().With(1, "a")... // compiles just fine.
Run Code Online (Sandbox Code Playgroud)
如果我创建一个int并调用Match()它,它正确使用最后一个扩展方法:
var one = 1;
one.Match().With(1)... // compiles just fine. …Run Code Online (Sandbox Code Playgroud) 我想在C#,Java和AS3中编写一个简单的颜色管理框架.我只想编写一次单元测试,而不是在JUnit,FlexUnit和NUnit中重新创建单元测试.
我想到了一个xml文件的想法,该文件通过setup,teardown和set tests来定义基于"实例"状态的"实例"和断言的操作.然后有一个实用程序可以将该XML转换为xUnit代码,用于任意数量的xUnits.在我开始浪费时间开发这样的解决方案之前,我想确保没有类似的解决方案已经存在.
我希望在Windows Vista/2008计算机上从Java创建符号链接(软链接).我很高兴我需要呼吁JNI这样做.我虽然在实际的C代码上寻求帮助.创建链接的适当系统调用是什么?关于这个主题的一些好的文件的指针将非常感谢.