0

サーバーで実行されているすべてのドメインユーザーコンピューターに.NETFramework4を展開する必要があります。ユーザーがドメインにログオンしたときに開始されるログインスクリプトから自動的に実行されるコンソールアプリケーションを作成しました。

私が持っている現在のコードは、サーバー上にあるインストールファイルにリンクして自動的に実行することができます。ただし、クワイエットモード、つまり/qを使用して実行することはできません。インストールファイルが実行されるたびに、ユーザーにインストールを促すメッセージが表示されます。つまり、[次へ]をクリックして[インストール]をクリックします。

私の現在のコードは次のようになります(セキュリティ上の理由からログインの詳細とファイルパスを変更しました。ただし、ファイルはサーバー上にあり、ログインの詳細はメインの管理者アカウントです)-

Function ConvertToSecureString(ByVal str As String)
    Dim password As New SecureString
    For Each c As Char In str.ToCharArray
        password.AppendChar(c)
    Next
    Return password
End Function

Sub Main()
    Dim securePass As New Security.SecureString()
    Dim password As SecureString = ConvertToSecureString("password")
    Dim myProcess As New Process()

    myProcess.StartInfo.Arguments = "/q"
    myProcess.Start("C:\dotNetFx40_Full_x86_x64.exe", "user", password, Nothing)
    myProcess.StartInfo.CreateNoWindow = True
End Sub

調査で理解したところ、行:myProcess.StartInfo.Arguments = "/q"は、ユーザープロンプトなしでバックグラウンドでサイレントにインストールを実行することを意味します。ただし、動作しません。

4

1 に答える 1

0

なんとかそれを修正し、回避策を講じることができました。行を誤って配置していましたmyProcess.StartInfo.Arguments = "/q" 。代わりに、これをProcess.Start行に含めて、ProcessObjectを削除しました。だから今私は持っています:

Process.Start("C:\dotNetFx40_Full_x86_x64.exe", "/passive", "user", password, Nothing)

完了のプログレスバーが表示されるため、「/passive」の「/q」を変更しました。

とにかくアドバイスをありがとう。

グレッグ

于 2013-01-22T14:38:43.110 に答える