【问题标题】:Problems running python program with srvany.exe使用 srvany.exe 运行 python 程序时出现问题
【发布时间】:2014-03-17 08:15:54
【问题描述】:

我必须以一个完整的免责声明作为开头,即我还处于 Python 开发的早期阶段

我编写了一个简单的 python 程序,它等待通过端口 20000 与本地 IP 地址的套接字连接。当它获得连接时,它会使用 win32api 弹出消息警报。

#tcpintercomserver.py
import socket
import sys
import win32api

ip = socket.gethostbyname(socket.gethostname())

#socket creation
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#Binding
server_address = (ip, 20000)
sock.bind(server_address)
print server_address

#Listen
sock.listen(1)

while True:
# Wait for a connection
    connection, client_address = sock.accept()
    win32api.MessageBox(0,'MessageText','Titletext', 0x00001000)
    # Close Connection
    connection.close()

我还有一个简单连接到套接字的配对客户端程序。该脚本接受您尝试访问的主机的参数(DNS 名称或 IP 地址)

#tcpintercomcli.py

import socket
import sys

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect the socket to the port where the server is listening
server_address = (sys.argv[1], 20000)
sock.connect(server_address)

这一切都作为脚本运行良好。然后我使用 CX_Freeze 将它们转换为可执行文件。两者都像脚本一样运行。

现在我已经获取了服务器脚本,并使用 srvany.exe 将其连接到服务,并在 windows 中使用了 SC 命令。

我使用 SC create "intercom" binPath="C:\dist\srvany.exe" 设置服务

在注册表中的对讲服务键下,我添加了参数键,并在其中将 Application 设置为字符串值 c:\dist\tcpintercomserver.exe

然后我执行“net start intercom”,服务启动成功,tcpintercomserver.exe 被列为正在运行的进程。但是,当我运行 tcpintercomcli.py 或 tcpintercomcli.exe 时,没有出现警报。

我很困惑...CX_Freeze 进程是否有什么东西可能会搞砸?

【问题讨论】:

    标签: python windows sockets service tcp


    【解决方案1】:

    服务进程无法显示消息框,它们无权访问 UI,它们通常以 SYSTEM 用户身份运行。如果您从服务中运行,则调试和显示消息的正确方法是使用 EventLog。 看: http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog%28VS.71%29.aspx

    【讨论】:

      【解决方案2】:

      如果您使用的是 Windows Vista 或更高版本,您的脚本会直接运行到 Session 0 Isolation - 其中来自 Windows 服务的 GUI 元素不会显示在交互式用户的桌面上。

      如果您switch to session 0...,您可能会看到您的消息框...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        • 2010-09-06
        • 2013-06-22
        • 2011-11-24
        相关资源
        最近更新 更多