识别并解决命名管道通信问题(Named Pipe Issue)


背景

命名管道(Named Pipe)是一种进程间通信方法,允许应用程序或进程通过共享内存进行通信。
CONNECTION 客户端使用命名管道在 Bentley 许可服务和 CONNECTION 客户端之间进行通信。

 

命名管道通信问题的影响 

Bentley 许可工具必须与 CONNECTION 客户端通信,以便 Bentley 许可工具能够获取策略。这是必要的,以便 Bentley 许可工具可以为您授予您被允许运行的应用程序的许可。

如果 Bentley 许可工具无法拉取策略,通常应用程序会在 7 天后进入并停止运行。

 

识别命名管道通信问题

如果您能够登录 CONNECTION 客户端,这应该也会在 Bentley 许可工具中反映出来。

如果命名管道无法正常工作,Bentley 许可管理工具将无法识别 CONNECTION 客户端已登录,并会显示不同的消息。

 

如果您确定存在命名管道通信问题,应该怎么办?

您可以将 CONNECTION 客户端使用的通信方法从命名管道通信更改为 HTTP 通信。
以下是涉及运行两个不同批处理文件的说明,每个文件都在不同的命令行会话中运行。
一个(“ccoverhttpenable-admin.bat”)需要以管理员身份启动命令行——

另一个(“ccoverhttpenable-user.bat”)需要以非管理员身份启动命令行——

两个批处理文件不应在同一个命令行会话中运行!
为此,请按照以下步骤操作——

 

1 )  下载“ccoverhttpenable v3.zip”,解压文件以获取“ccoverhttpenable-user.bat”和“ccoverhttpenable-admin.bat”。

注意您保存文件的目录,您需要在命令行中导航到该目录。如果您不熟悉命令行,请在 C 盘根目录下创建一个目录(以下示例是名为 TEMP 的目录),并将文件放在那里以便操作——




2)  登出 Connection Client

3)  打开任务管理器,结束 Bentley.Licensing.Service.exe、Bentley.Connect.Client.exe 以及所有其他 Bentley 程序。等待以确保它们不会再次启动。 

4)  导航到 %localappdata%/Bentley/(将此路径粘贴到 Windows 资源管理器的地址栏中)。 

5)  删除“MySELECT.db”文件和“Licensing”文件夹(以及其中的所有文件)。 

6)  假设您是一个没有管理员权限的本地用户(如何确定见下文)—— 

a) 让具有管理员权限的用户登录系统,并按照步骤 7 的 a 到 c 进行操作。 

b) 以普通用户身份登录 Windows,运行 CMD(点击开始按钮,在搜索栏中输入“cmd”,然后点击“命令提示符”)。 



c) 使用 CD 命令导航到您保存批处理文件的目录。 

CD [/D] [drive:][path]   For instance - CD C:\TEMP

d) 按照步骤 7e 进行操作。 

如果这台机器被多个用户使用,那么这一步需要为每个用户重复执行

 e) 进入步骤 8。 

 

7)  假设您是一个具有管理员权限的本地用户—— 

a) 以管理员身份运行 CMD(点击开始按钮,在搜索栏中输入“cmd”,然后右键点击“命令提示符”并选择“以管理员身份运行”)。 

    • 如果出现 Windows 10 用户账户控制提示,请点击“是”。

b) 使用 CD 命令导航到您保存批处理文件的目录。 

    1. CD [/D] [drive:][path]   For instance - CD C:\TEMP

 

c) 在管理员 CMD 中运行管理员脚本,输入以下命令:

ccoverhttpenable-admin.bat 1

 
(不要包含引号)。
    1. 请注意,数字用于控制批处理文件。“1”表示进行更改,“0”表示撤销更改。

d) 关闭管理员 CMD 窗口。再次打开 CMD,这次以非管理员身份运行(点击开始按钮,在搜索栏中输入“cmd”,然后点击“命令提示符”)。 

e) 使用 CD 命令导航到您保存批处理文件的目录。 

    1. CD [/D] [drive:][path]   For instance - CD C:\TEMP

f) 在 CMD 中运行用户脚本,输入以下命令:

ccoverhttpenable-user.bat 1

 
(不要包含引号)。
    1. 请注意,数字用于控制批处理文件。“1”表示进行更改,“0”表示撤销更改。

8)  登录CONNECTION Client

9)  打开 Bentley 许可工具,验证 Bentley 许可工具的左上角是否显示了用户名。如果用户名没有出现在 Bentley 许可工具中,请以管理员身份运行 CONNECTION 客户端,然后再次尝试。 

    1. 打开任务管理器,结束 Bentley.Licensing.Service.exe、Bentley.Connect.Client.exe 以及所有其他 Bentley 程序。等待几分钟,以确保它们不会再次启动。
    2. 转到 CONNECTION 客户端的安装位置,默认位置是 %programfiles%\Common Files\Bentley Shared\CONNECTION Client,然后进入 LicService 文件夹。
    3. 找到 Bentley.Licensing.Service.exe,右键点击它并选择“以管理员身份运行”
  1. 打开产品
  2. 如果产品仍然无法获得许可,请发送两个命令行会话的屏幕截图,并收集并提交最新的日志——

 

如何收集日志

 

如何确定您是否是系统管理员

方法 1: 根据设置来判断

打开设置:按下 Windows 键 + I 打开设置应用程序。

导航到账户:点击“账户”。 

转到您的信息:点击“您的信息”。 

检查账户类型:查找您的用户账户名称,如果您的账户具有管理员权限,旁边应该会出现“管理员”字样。 

方法 2: 从控制面板
  1. 打开控制面板:在任务栏中搜索“控制面板”并打开它。
  2. 转到用户账户:点击“用户账户”。
  3. 更改账户类型:点击“更改您的账户类型”。
  4. 检查账户类型:确保选中了“管理员”。

 

重新启用命名管道通信

 

  1. 下载“ccoverhttpenable v2.zip”,解压文件以获取“ccoverhttpenable-user.bat”和“ccoverhttpenable-admin.bat”(如需必要)。 
  2. 登出 Connection Client
  3. 打开任务管理器,结束 Bentley.Licensing.Service.exe、Bentley.Connect.Client.exe 以及所有其他 Bentley 程序。稍等片刻,以确保它们不会再次启动。
  4. 假设您是一个没有管理员权限的本地用户—— 
    1. 让具有管理员权限的用户登录系统,并按照步骤 5 的 a 到 c 进行操作。
    2. 以普通用户身份登录 Windows,运行 CMD
    3. 使用 CD 命令导航到您保存批处理文件的目录。
    4. 按照步骤 5d 进行操作。 
      • 如果这台机器被多个用户使用,那么这一步需要为每个用户重复执行。
    5. 进入步骤 6。
  5. 假设您是一个具有管理员权限的本地用户—— 
    1. 以管理员身份运行 CMD 
    1. 使用 CD 命令导航到您保存批处理文件的目录 

    2. 在管理员 CMD 中运行管理员脚本,输入以下命令:
      ccoverhttpenable-admin.bat 0
       
      (不要包含引号)
    3. 在管理员 CMD 中运行用户脚本,输入以下命令:
      ccoverhttpenable-user.bat 0
       
      (不要包含引号)
  1. 登录 CONNECTION Client