6

I have a weird question. I have written a winform server application and a winform client application. The role of the client is to send commands for running a certain script to the server. The server receives those commands, parses them, and runs them.

These two work great.

I have written a cmd application which uses some of the functions from my client. This application is supposed to function as a cmd client.

The question is this: When I run the winform client, the server runs the commands with no problems at all. When I run the cmd client, when the server attempts to execute the received command, Windows on the server side pops up the security question of whether the script can be run or not (see attached image).

Why does it happen on the cmd and not on the winforms.

Here is my code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.Net.Sockets;
using System.ComponentModel;
using System.IO;
using System.Management;

namespace RemoteBatcher
{
    class ClientCmdProgram
    {
        private static RegistryKey registryKey;
        private static Socket clientSock;
        private static string remoteIpAddress = "192.168.0.1";
        private static int remotePort = 8;
        private static string userName = "";
        private static string targetPath = "Z:\\nBatcher\\";
        private static List<string> listOfCommands = new List<string>();

        static void Main(string[] args)
        {
            var backgroundWorker = new BackgroundWorker();
            userName = RemoteUtils.getConnectedUser();            
            registryKey = Registry.CurrentUser.OpenSubKey("Key");

            if (registryKey == null)
            {
                Console.WriteLine("Error! No Saved Data Was Found In The Registry. Please Run The RemoteBatcherClient App First.");
                Environment.Exit(1);
            }

            if (!connectToServer(backgroundWorker))
                Environment.Exit(1);

            getCommandsList();
            sendCommands(backgroundWorker);
        }
        private static bool connectToServer(BackgroundWorker backgroundWorker)
        {
            try
            {
                clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                clientSock.Connect(remoteIpAddress, remotePort);
                backgroundWorker.DoWork += (sender1, e1) => RemoteUtils.copyDllsToServer(targetPath += userName);
                backgroundWorker.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
                return false;
            }

            return true;
        }
        private static void getCommandsList()
        {
            string[] commandsInRegistry = registryKey.GetValueNames();

            for (int i = 0; i < commandsInRegistry.Length; i++)
            {
                listOfCommands.Add(registryKey.GetValue(commandsInRegistry[i]).ToString());
            }
        }
        private static void sendCommands(BackgroundWorker backgroundWorker)
        {
            int flicker = 100;
            int counter = 100;
            try
            {

                while (backgroundWorker.IsBusy) 
                {
                    if (counter == flicker)
                    {
                        counter = 1;
                        Console.WriteLine("Copying Executable Files, Please Wait..");
                    }
                    else if (counter == 50)
                    {
                        Console.Clear();
                    }
                    else
                        counter++;
                }

                for (int i = 0; i < listOfCommands.Count; i++)
                {
                    clientSock.Send(Encoding.Default.GetBytes(listOfCommands[i] + " <eom> "));
                }
                clientSock.Close();
                clientSock.Dispose();
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
                Environment.Exit(1);
            }

        }
    }
}

Any ideas?

4

1 に答える 1

7

Windows XP で開いているファイル - セキュリティ警告を無効にするにはどうすればよいですか?

警告を無効にするには、グループ ポリシー エディターを起動し ([スタート] > [ファイル名を指定して実行]、「-gpedit.msc-」と入力して [OK] を押します)、次の場所に移動します。

-[ユーザーの構成] > [管理用テンプレート] > [Windows コンポーネント] > [添付ファイル マネージャー] - [低ファイル タイプの包含リスト] を [有効] に設定し、ボックスに警告を表示したくないファイル タイプを入力します (例: .exe)。

于 2013-02-05T08:27:39.093 に答える