3

新しいWindows7システムをセットアップするための小さなアプリケーションを作成しようとしています。これは基本的に、すべての設定をそのままにしてハードドライブのイメージを作成できるようにするためです。

C#からリモートデスクトップを有効にするにはどうすればよいですか?

誰もが私を怒らせているのは面白いと思いますが、誰も質問に答えませんでした。sysprepは、イメージの設定に必要なすべてのアクションを実行できません。RDPを実行せずに有効にしたい。レジストリキーを変更し、ファイアウォール設定を追加します。

いくつかのハードウェアで実行するには、このイメージが必要になります。

これが私が完了する必要のあるタスクの洗濯物リストです。

静的IPアドレス。コンピューターによって異なります。フォルダのアクセス許可を変更します。ドメインによって異なります。コンピューター名の変更Rysncサーバーのインストールカスタムアプリケーションのインストールカスタムサービスのインストールファイアウォールのアクセス許可ドライバー対話型ログオンの無効化送信するシステムの場所に応じた日時の変更Windowsグループポリシー設定をアクティブ化します。

sysprepがこれらすべてのことを実行できるとは思いませんか?

4

3 に答える 3

13

以前のプロジェクトで次のものを使用しましたが、うまく機能しているようです。

        try
        {
            RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, TargetMachine.Name);
            key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Terminal Server", true);
            object val = key.GetValue("fDenyTSConnections");
            bool state = (int)val != 0;
            if (state)
            {
                key.SetValue("fDenyTSConnections", 0, RegistryValueKind.DWord);
                MessageBox.Show("Remote Desktop is now ENABLED");
            }
            else
            {
                key.SetValue("fDenyTSConnections", 1, RegistryValueKind.DWord);
                MessageBox.Show("Remote Desktop is now DISABLED");
            }
            key.Flush();
            if (key != null)
                key.Close();
        }
        catch
        {
            MessageBox.Show("Error toggling Remote Desktop permissions");
        }
于 2012-04-30T16:51:10.330 に答える
3

WindowsSysprepに付属のツールを使用することをお勧めします。システムを準備して、必要なすべてのセットアップを実行し、実行してsysprepから、コンピューターをシャットダウンしてイメージを作成できるようにします。(これは、SysprepとImageXを使用する方法に関するビデオチュートリアルです。2つのWindowsツールは、あなたがやろうとしていることを正確に実行するように設計されています)

イメージを初めて起動すると、[Windowsのセットアップ]画面が表示され、コンピューターの名前などが入力されます(または、xmlファイルに入力して、その手順をスキップし、その情報を事前に入力することもできます)。

これを行う大きな理由の1つは、ドメインを使用している場合、各マシンのRIDが同じになり、ADシステムに影響を与えることです(そして、私は自分自身を噛みしめ、それがツールについて学んだ方法です)。


これが私が完了する必要のあるタスクの洗濯物リストです。

静的IPアドレス。コンピューターによって異なります。フォルダのアクセス許可を変更します。ドメインによって異なります。コンピューター名の変更Rysncサーバーのインストールカスタムアプリケーションのインストールカスタムサービスのインストールファイアウォールのアクセス許可ドライバー対話型ログオンの無効化送信するシステムの場所に応じた日時の変更Windowsグループポリシー設定をアクティブ化します。

これらはすべて、unattend.xml回答ファイルに入れて設定できます。 これは、ファイルの作成方法を示す非ビデオチュートリアルです。unattend.xml

于 2012-04-30T16:46:43.803 に答える
1

このコードは、レジストリに3つの異なる値を設定します:( SysTracer v2.6でレジストリの変更を見つけました)

            AllowRemoteAssistance = true;
            RemoteDesktopSelectNumber = 2;
            RegistryKey key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default);
            key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Remote Assistance", true);
            if (AllowRemoteAssistance)
                key.SetValue("fAllowToGetHelp", 1, RegistryValueKind.DWord);
            else
                key.SetValue("fAllowToGetHelp", 0, RegistryValueKind.DWord);
            key.Flush();
            if (key != null)
                key.Close();

            if (RemoteDesktopSelectNumber == 1 || RemoteDesktopSelectNumber == 2)
            {
                key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default);
                key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\", true);
                key.SetValue("UserAuthentication", 0, RegistryValueKind.DWord);
                key.Flush();
                if (key != null)
                    key.Close();

                key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default);
                key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Terminal Server", true);
                if (RemoteDesktopSelectNumber == 1)
                    key.SetValue("fDenyTSConnections", 1, RegistryValueKind.DWord);
                else
                    key.SetValue("fDenyTSConnections", 0, RegistryValueKind.DWord);
                key.Flush();
                if (key != null)
                    key.Close();
            }
            else if (RemoteDesktopSelectNumber == 3)
            {
                key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default);
                key = key.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\", true);
                key.SetValue("UserAuthentication", 1, RegistryValueKind.DWord);
                key.Flush();
                if (key != null)
                    key.Close();
            }
于 2014-08-03T13:51:41.187 に答える