IIS のタグが付いているということは IIS 上で動いている ASP.NET Web アプリの VB.NET のコードで Process.Start を使って何らかのアプリを起動させようという話で、ローカルの開発環境とテスト環境のサーバーにデプロイとの違いは以下のようなことであろうと理解してレスします。
開発環境: Visual Studio から Web アプリを起動して IIS Express で動かす。
テスト環境: Web サーバーにデプロイして IIS で Web アプリを動かす。
開発環境では動くが、IIS で動かないという原因のほとんどは以下の 2 つです。
(1) ワーカープロセスのアクセス権の違い。
セキュリティ対策で ASP.NET を動かすワーカープロセスのデフォルトのアカウントのアクセス権は必要最低限に低いです。IIS 7.0 では NETWORKSERVICE アカウント、IIS 7.5 以降では アプリケーション プール ID というアカウントを使っています。
IIS 7.0 での組み込みユーザーとグループ アカウントとは
https://docs.microsoft.com/ja-jp/previous-versions/dd939094(v=technet.10)
アプリケーション プール ID
https://docs.microsoft.com/ja-jp/previous-versions/ee886292(v=technet.10)
(2) IIS の方ではプロセスがユーザー対話モードで実行されていない。以下は Microsoft のドキュメントからの抜粋です。
"IIS のように、ユーザー インターフェイスを表示せずに動作する Windows のプロセスやサービスの場合、UserInteractive プロパティは、false を返します。このプロパティが false の場合は、ユーザーが対話するためのグラフィカル ユーザー インターフェイスが存在しないため、モーダル ダイアログやメッセージ ボックスは表示しないでください。"
・・・ということで、質問者さんの Python がどこで上記の制約に引っかかっているかをご自分で調べて対処してもらうということになると思います。
【追記】
ちなみに「開発環境: Visual Studio から Web アプリを起動して IIS Express で動かす。」場合は Visual Studio を立ち上げたユーザーアカウント(管理者権限を持っていると思う)で Web アプリは動くので、(1) アクセス権は管理者権限、(2) ユーザーアカウントなのでユーザー対話モードで実行されていると思います。