我们有一种非常奇怪的行为,我无法确定其根本原因。我们使用 TFS (2017.U2) 来编译我们的旧系统,并尝试将我们的构建农场从 2008R2 更新到 2016 年。构建系统使用 PowerShell (v5) 循环遍历 VBP 项目列表并运行 VBS 脚本以编译项目。
首先是一些基础知识。UAC 完全禁用(在注册表中,不仅仅是滑块控件),VB6.EXE 也设置为 XP SP3 兼容性,并且还以管理员身份运行。
不幸的是,虽然我们可以在任务管理器中看到 VB6.EXE 启动 - 它只是挂起。零活动。以交互方式运行相同的编译对于相同的用户来说效果很好。这让我推断这是一个环境问题,但是进程资源管理器向我显示了 VB6.EXE 进程上的有效用户环境。
我不相信这是由于 VB6 抛出错误,因为(至少在以前版本的 Windows Server 中)当后台进程打开 UI 元素时,操作系统会向前台指示后台想要闯入。我们不看到那个。
我们已经把它回溯到一个我称之为“test.ps1”的最低限度的代码示例:
$vb6="C:\Program Files (x86)\Microsoft Visual Studio\VB98\vb6.exe"
Set-Location D:\Builds\27\s\path\prjdir
start-process $vb6 -ArgumentList "/make /out errors.txt project.vbp" -wait
Run Code Online (Sandbox Code Playgroud)
我们一直在使用“启动进程”来触发 VB6 编译,因为通过 PowerShell 直接调用不能正确摄取参数(它们实际上是由在完整进程中传递到主脚本中的字符串构建的......这个是简化版)。
当以交互方式运行 (.\test.ps1) 时,此功能正常。项目编译,我得到了一个errors.txt 文件。
当作为一个进程 (start-process .\test.ps1) 启动时,它再次正常运行。
当通过 TFS“PowerShell 脚本”任务触发时,这无法完成 VB6 步骤 - 可以在任务查看器中使用适当的参数看到 VB6.EXE,并且没有 CPU 或 IO 与任务相关联。没有写入 errors.txt 文件。不会创建新的 DLL。 …
我正在使用 Javascript regEx 来解析图像 url 的数据库字段并将它们格式化以进行输出 - 到目前为止,我一直在使用
input = input.replace(/(https?:\/\/.*?\.(?:png|jpe?g|gif)(.*))(\w|$)/ig, "<br><img style='max-width:100%;overflow:hidden;' src='$1'>");
Run Code Online (Sandbox Code Playgroud)
它一直很好地为我服务。所有 png、jpe?g 和 gif 引用都被 IMG 标签替换,图像按预期显示在输出流中。
然而,我被抛在了脑后。
我注意到一些 url(特别是来自 Facebook CDN 的那些——尽管我认为其他人也可以这样做)在图像类型之后附加了一大堆“东西”......如果不存在的东西会导致文件不可用,并生成丢失的图像图标。例如,这是来自 fbcdn.net 的有效图片网址:
https://scontent-lga1-1.xx.fbcdn.net/hphotos-xtf1/v/t1.0-9/11147160_10156300867440377_5455334309678688318_n.jpg?oh=916e68ac2c908bbe15961825c373d6bc&oe=5606B6F4
Run Code Online (Sandbox Code Playgroud)
有人可以建议对 regEx 进行更改/改进以获取额外的尾随字符吗?或者是否需要另一种攻击方法
(我个人喜欢全局正则表达式,因为我可以一次确定流中的所有实例......不得不手动解析流并不是我所期待的......)
更新:我知道请求中有一些歧义 - 希望这会澄清。
我需要拉出任何图像 url - 无论图像扩展后的“东西”如何。它可以是文本字符串中的第一项,也可以是最后一项,或者嵌入在中间的某处。
处理是在 Javascript 中完成的。我目前正在使用它作为我的有效性测试。其中的所有图片都是从 Google 图片搜索中提取的有效网址。
http://well-being.esdc.gc.ca/misme-iowb/auto/diagramme-chart/stg2/c_4_21_6_1_eng.png?20150508104424447 This is arbitrary text https://scontent-lga1-1.xx.fbcdn.net/hphotos-xtf1/v/t1.0-9/11147160_10156300867440377_5455334309678688318_n.jpg?oh=916e68ac2c908bbe15961825c373d6bc&oe=5606B6F4 this is arbitrary text
http://lh6.ggpht.com/-1Rua79J-EDo/TwuyZkHwcmI/AAAAAAAADvA/ENfg1TeayvU/type_catalog_error_thumb%25255B1%25255D.jpg?imgmax=800 this is arbitrary text http://image.slidesharecdn.com/top5thingstodoafteranaccident-140826163850-phpapp02/95/top-five-things-to-do-after-any-type-of-accident-causing-injury-1-638.jpg?cb=1409089267
Run Code Online (Sandbox Code Playgroud)
希望这能让我对我可能遇到的变化类型有足够的了解(我唯一确定的是 FBCDN - 我将其他人建立在我所看到的其他知识的基础上......所以一个通用的解决方案是需要,不是特定于 FBCDN 的)。
感谢所有提供建议的人...
我在Angular 1.4.1下设置持久性cookie时遇到问题.根据Chrome的资源检查,以及关闭浏览器和重新打开页面的更明显效果,Cookie总是会结束为会话cookie.
$scope.HideSystemNotice = function() {
// set expiry 1 yr in the future - well after System Notice expires
var now = new Date(),
exp = new Date(now.getFullYear()+1, now.getMonth(), now.getDate())
$cookies.put( 'Snotice'+$scope.SystemNoticeInfo[0].snid, // cookiename
'dismissed', // value
{ 'expires': exp } // expiry
);
$scope.NextSystemNotice();
};
Run Code Online (Sandbox Code Playgroud)
这与StackOverflow上其他地方提供的示例基本相同(但我缺少添加到那些convos的rep :(因此是单独的问题)
正在设置Cookie - 我可以在Chrome的资源视图中看到它们.但是,它们没有到期日期(Chrome将其显示为"会话").
在设定日期时我错过了哪些明显的花絮?谢谢.
编辑....
我在设定有效期限时仍然遇到问题.我现在已升级到Angular 1.4.7,并尝试在.config中使用$ cookiesProvider默认值而没有任何好处
app.config(function($cookiesProvider) {
var n = new Date();
$cookiesProvider.defaults = {
path: '/',
domain: location.hostname,
secure: true,
expires: new Date(n.getFullYear()+1, n.getMonth(), n.getDate())
};
}); …Run Code Online (Sandbox Code Playgroud)