我想渲染(用于内部调试/信息)程序集的最后修改日期,因此我将知道何时部署了某个网站.
是否有可能通过反思得到它?
我得到这样的版本:
Assembly.GetExecutingAssembly().GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的东西 - 我不想打开物理文件,获取它的属性或类似的东西,因为我将在母版页中呈现它,并且不希望那种开销.
在Windows 2003和Windows XP中,您可以右键单击程序集(.dll)转到属性,单击版本选项卡,然后您将看到3个不同的版本号:程序集版本,文件版本和产品版本.
如果您使用相同的文件并在Windows 2008中查看其属性,则只能看到文件版本和产品版本.
有没有办法在Windows Vista和更新版本(没有第三部分工具)中查看.NET程序集的程序集版本?
我想从我的C++代码中显示文件的Windows文件属性对话框(在Windows 7上,使用VS 2012).我在这个答案中找到了以下代码(其中还包含一个完整的MCVE).我也试过CoInitializeEx()先打电话,如文件中所述ShellExecuteEx():
// Whether I initialize COM or not doesn't seem to make a difference.
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
SHELLEXECUTEINFO info = {0};
info.cbSize = sizeof info;
info.lpFile = L"D:\\Test.txt";
info.nShow = SW_SHOW;
info.fMask = SEE_MASK_INVOKEIDLIST;
info.lpVerb = L"properties";
ShellExecuteEx(&info);
Run Code Online (Sandbox Code Playgroud)
此代码有效,即显示属性对话框并ShellExecuteEx()返回TRUE.但是,在" 详细信息"选项卡中,size属性错误,并且缺少日期属性:
" 详细信息"选项卡中的其余属性(例如文件属性)是正确的.奇怪的是,大小和日期属性在" 常规"选项卡(最左侧选项卡)中正确显示.
如果我通过Windows资源管理器打开属性窗口(文件→右键单击→属性),则" 详细信息"选项卡中的所有属性都会正确显示:
我尝试了几种文件和文件类型(例如txt,rtf,pdf)在不同的驱动器和三台不同的PC上(1x德国64位Windows 7,1x英语64位Windows 7,1x英语32位Windows 7) .我总是得到相同的结果,即使我以管理员身份运行我的程序.在(64位)Windows 8.1上,代码对我有用.
我发现问题的原始程序是MFC应用程序,但如果我将上述代码放入控制台应用程序中,我会看到同样的问题.
如何在Windows 7 的" 详细信息"选项卡中显示正确的值?它甚至可能吗?
有没有一种简单的方法来检查文件上是否存在数字签名而不尝试验证其签名的证书?
我想在目录中签署一长串exe和dll文件,但只包含尚未签名的文件.
例如,如果其中一个文件已由Microsoft或其他第三方签名,我不想再使用我公司的证书签名.
通过右键单击文件并查看其属性(如果数字签名选项卡显示已签名),可以轻松检查文件是否具有数字签名.我正在寻找一种使用C#检查此数字签名属性的简单方法.
现在,我正在使用带有signtool.exe的verify命令 - 它不仅检查数字签名是否存在,还检查用于签署文件的证书是否由受信任的机构颁发.
这是我执行此操作的简单而笨重的方法:
private static Boolean AlreadySigned(string file)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.FileName = "signTool.exe";
startInfo.Arguments = "verify /v " + file;
startInfo.UseShellExecute = false;
Process process = new Process();
process.StartInfo = startInfo;
process.EnableRaisingEvents = true;
process.Start();
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
return output.Contains("Signing Certificate Chain:");
}
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用详细标记"/ v"并检查输出是否包含文本"签名证书链:" - 只是因为我注意到该字符串始终位于已签名的文件的输出中 - 并且从任何尚未签名的文件中省略.
无论如何,尽管它的笨拙,这段代码似乎完成了工作.我想改变它的一个原因是因为它似乎需要几百毫秒才能对文件执行verify命令.我不需要验证证书我只是想看看文件上是否存在数字签名.
简而言之,是否有一种简单的方法来检查数字签名是否存在 - 而不是试图验证它?
我试图从MP3文件中获取BPM属性:
我可以在这个问题中看到如何在Windows应用商店应用中执行此操作:
如何在Windows应用商店C#中阅读mp3文件的Beats-per-minute标签?
但无法看到如何Windows.Storage在Windows窗体应用程序中使用.(如果我理解正确,那是因为Windows.StorageUWP特有的.)
如何在Forms应用程序中阅读此内容?如果没有原生的东西,很高兴使用(希望是免费的)库.
我希望在没有打开的情况下在磁盘上找到图像的高度/宽度,如果可能的话(出于性能原因).
图像的Windows属性窗格包含宽度,高度,位深度等信息,这使我相信它正在某处存储元数据.我如何访问此信息?
我有一个简单的WCF服务,允许客户/消费者上传图像,音频或视频文件.上传后,服务应该分析文件并以某种方式检索以下属性:
图像:宽度,高度,拍摄日期,使用的程序
音频:运行时,艺术家,专辑,流派,比特率,出版年份
视频:运行时,宽度,高度,帧/秒,视频比特率,音频比特率
显然,Windows可以很容易地获取和显示这些属性,但我如何在C#中实现呢?
我正在为VS Code编写一个插件,我需要知道调用扩展的文件的路径,如果它是从编辑器上下文菜单或资源管理器上下文菜单调用的,或者用户只需键入扩展命令.
function activate(context){
// get full path of the file somehow
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
如果在Windows资源管理器中查看文件属性,"详细信息"选项卡, - 对于许多文件类型(例如,tiff或jpeg图像,Office文档等),"描述"部分的字段如"标题","主题","标签"和"评论".有没有办法从Perl或PowerShell脚本读取/写入这些字段?
我想知道是否可以使用Windows API代码包来设置/编辑文件扩展属性(资源管理器:右键单击>属性>详细信息)。
var shellFile = Microsoft.WindowsAPICodePack.Shell.ShellObject.FromParsingName(filePath);
var artistName = shellFile.Properties.GetProperty(SystemProperties.System.Music.DisplayArtist).ValueAsObject.ToString();
var duration = TimeSpan.FromMilliseconds(Convert.ToDouble(shellFile.Properties.GetProperty(SystemProperties.System.Media.Duration).ValueAsObject) * 0.0001);
Run Code Online (Sandbox Code Playgroud)
我使用以下几行来获取所需的属性,但是我不知道如何编辑其中之一(例如艺术家名称)。我知道我可以使用taglib-sharp,但是只有在没有外部代码的情况下没有解决方案时,我才会使用它。
谢谢大家花时间帮助我。
file-properties ×10
c# ×5
.net ×2
windows ×2
asp.net ×1
assemblies ×1
c++ ×1
file ×1
javascript ×1
mp3 ×1
perl ×1
powershell ×1
reflection ×1
signing ×1
typescript ×1
winapi ×1
windows-7 ×1