我的程序有没有办法确定它何时在远程桌面(终端服务)上运行?
我想在程序在远程桌面会话上运行时启用"不活动超时".由于用户因打开远程桌面会话而臭名昭着,我希望我的程序在指定的不活动时间后终止.但是,我不希望为非RD用户启用非活动超时.
背景
我正在使用 Citrix Workspace(版本 20.2.0.25(2002))中的 Desktop Viewer 功能从家庭计算机访问我的工作计算机。
要求
我希望能够更轻松地从(全屏)远程会话切换回本地桌面。
目前,我只能通过远程会话屏幕顶部的控制栏来完成此操作,这开始让人感到乏味。
Alt+Tab
不起作用,因为它仅在会话打开时切换远程会话中的应用程序。
是否通过根据Alt+Tab
需要开始工作、最小化会话窗口的热键或其他方法来完成切换对我来说并不重要。
我尝试过的
网上有很多问题解决如何在远程会话中启用但不禁 用它。当然,我尝试按照这些说明进行相反的操作,但没有成功。他们通常建议在本地计算机的注册表中进行设置,所以我认为我的应该有Alt+Tab
TransparentKeyPassthrough=Remote
Remote
已经设置了,我只需要清除它或用其他东西替换它,但我的是空值。
我已经浏览了 Citrix Workspace 和远程会话首选项中的所有选项,但没有关于启用/禁用/设置热键的信息。
我尝试了此Citrix 支持页面的“通过 ICACLIENT.ADM 模板禁用热键” ,但无法找到它们引用的 icaclient 模板文件。
我已联系公司的服务台,但他们不知道任何解决方案。
我必须使用多个Citrix桌面,其中禁用从本地计算机到服务器的" COPY/PASTE " .是否存在绕过此限制的变通方法或技巧?
我知道这不是严格的程序员问题,另一方面,我真的希望能够svn up
在生产服务器上做一个简单的事情,这将为我们节省很多麻烦.
或者生产服务器位于公司网络中,并且只允许通过网关服务器进行访问.从那以后我们可以通过远程桌面访问实际的服务器.由于这种维护不友好的设置,我们使用sftp服务器将我们的文件送到生产服务器(ftp服务器alwys重置上次修改日期),因此确定哪些文件已更改很复杂.
因此,如果可以通过citrix连接从实际服务器设置ssh隧道,则可以简化整个更新过程.
(在我考虑的另一个选项是使用bazaar将我们的更新推送到sftp服务器,然后从那里提取更新,但不幸的是,没有工作的svn插件可用于集市[在Windows上])
我最近为客户开发了一个虚拟键盘应用程序.该程序几乎适用于所有程序,但某些命令与Citrix一起使用{ENTER}
或未{DEL}
使用Citrix.有解决方法还是替代方案SendKeys
?
编辑1:我尝试了SendInput方法(Windows输入模拟器使用SendInput),DEL键和箭头键仍然无法正常工作.然而,ENTER键有效.
编辑2:解决了它.测试了两个不同版本的Citrix.这个问题给了我很多帮助.:
Citrix瘦客户机使用keybd_event的扫描码参数,即使MS表示它未使用且应为0.您还需要提供物理扫描码以供Citrix客户端使用.Citrix客户端也存在使用SendInput API生成的键盘输入的主要问题.
我修补了Windows输入模拟器中的代码:
// Function used to get the scan code
[DllImport("user32.dll")]
static extern uint MapVirtualKey(uint uCode, uint uMapType);
/// <summary>
/// Calls the Win32 SendInput method ...
/// </summary>
/// <param name="keyCode">The VirtualKeyCode to press</param>
public static void SimulateKeyPress(VirtualKeyCode keyCode)
{
var down = new INPUT();
down.Type = (UInt32)InputType.KEYBOARD;
down.Data.Keyboard = new KEYBDINPUT();
down.Data.Keyboard.Vk = (UInt16)keyCode;
// Scan Code here, was 0
down.Data.Keyboard.Scan = (ushort) MapVirtualKey((UInt16)keyCode, …
Run Code Online (Sandbox Code Playgroud) 使用报告的MIME类型上载某些文件:
image/x-citrix-pjpeg
Run Code Online (Sandbox Code Playgroud)
它们是有效的jpeg文件,我接受它们.
我想知道:为什么MIME类型不同?
格式有什么不同吗?或者这种mimetype是由Citrix的一些灯泡发明的,没有明显的原因?
我一直在使用Citrix远程进入在VirtualBox中运行Ubuntu的Windows 7机器.我遇到的问题是遍布整个地方的重复角色.我尝试了一些东西,但以下是对我有用的东西:
我们有一个通过ClickOnce提供并由Web服务驱动的Windows Forms,.NET 2.0应用程序,我们的客户偶尔希望将其部署到Citrix环境中.在某些情况下,客户选择允许我们的应用程序在本地部署到用户计算机并绕过Citrix服务器,在一种情况下,我们已经为客户提供了静态安装程序,条件是不会自动推送更新,在某些情况下,我们的客户IT部门已经掌握了使ClickOnce部署在Citrix环境中工作的技术知识.
我的问题不是关于ClickOnce与Citrix问题本身 - 我们从在线研究和与客户交谈中学到了相当多的东西 - 但是关于我们第一手查看问题的最具成本效益的方法.特别是对于那些Citrix客户或供应商而言,我们设置Citrix QA环境(特别是Citrix用于桌面虚拟化)的最有效方式是什么,因为我们没有真正使用Citrix服务器?
我正在尝试使用CMA线路调用从C#web应用程序代码向Citrix XenApp Server发送一个简单的字符串参数,以启动特定的已发布应用程序(编译为exe的宏调度程序宏),而不是整个Citrix桌面.
我有一个使用cmd行代码的Web应用程序
"C:\Program Files (x86)\Citrix\ICA Client\Wfica32.exe" C:\someICAfile.ica \Param:"/username=SomebodysName" .
Run Code Online (Sandbox Code Playgroud)
我也试过参数语法: /username=SomebodysName, /Param:"/username=SomebodysName"
以及大约一百万个引号和斜线的其他组合.
我使用Citrix QuickLaunch来编写我的ICA文件,其中我唯一改变的是InitialProgram=#ApplicationName \Param
(我添加了\ Param).我也试过了/username
,\Param=SomebodysName
我也无法让任何人工作.我甚至试过在那里硬编码这个名字,我无法让它通过.
exe期望参数" username
",当从cmd提示符本地调用时,它可以使用UsernameProgram.exe /username=somebodysname
.我确保在Citrix Xenapp应用程序位置属性%*
的末尾包含" ",commandlineexecutable
以确保它可以接受命令行参数.
这都是使用C#和XenApp 6.一切正常,除了传递参数,我不知道参数丢失的位置,如果它甚至可以到达任何地方.我觉得我已经尝试了/和s的所有组合,所以如果有人能帮我解决语法问题,我真的很感激!我确实试过在c#中查看ICA Client SDK代码,但它似乎只是手动执行外部ICA文件将执行的操作.但是,如果这是错误的,请告诉我.我正在接近我将要尝试它的点,因为我完全没有想法.请帮忙.
谢谢!
我正在寻找一个API /函数,我可以调用它来确定软件是在Citrix,终端服务还是独立PC上运行.最理想的是,它可以像这样工作:
Select Case APIWhatSystem.Type.ToString
Case "Citrix"
bCitrix = True
Case "TS"
bTerminalServices = True
Case "PC"
bPC = True
End Select
Run Code Online (Sandbox Code Playgroud)
我更喜欢通过API调用工作的东西,而不是在注册表中查看某些东西,因为我们有越来越多的客户锁定注册表.
谢谢.
citrix ×10
windows ×2
.net ×1
api ×1
c# ×1
clickonce ×1
command-line ×1
copy-paste ×1
deployment ×1
jpeg ×1
mime-types ×1
parameters ×1
qa ×1
sendkeys ×1
ssh ×1
testing ×1
ubuntu ×1
vb.net ×1
virtualbox ×1
xenapp ×1