Skip to content

Commit aecd9ca

Browse files
author
Benjamin Pasero
committed
sandbox - remove native-is-elevated from renderer
1 parent 7b29e7c commit aecd9ca

4 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/vs/platform/electron/common/electron.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export interface ICommonElectronService {
6363
openExternal(url: string): Promise<boolean>;
6464
updateTouchBar(items: ISerializableCommandAction[][]): Promise<void>;
6565
moveItemToTrash(fullPath: string, deleteOnFail?: boolean): Promise<boolean>;
66+
isAdmin(): Promise<boolean>;
6667

6768
// clipboard
6869
readClipboardText(type?: 'selection' | 'clipboard'): Promise<string>;

src/vs/platform/electron/electron-main/electronMainService.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { OpenContext } from 'vs/platform/windows/node/window';
1010
import { ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifecycleMainService';
1111
import { IOpenedWindow, IOpenWindowOptions, IWindowOpenable, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
1212
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/common/dialogs';
13-
import { isMacintosh } from 'vs/base/common/platform';
13+
import { isMacintosh, isWindows, isRootUser } from 'vs/base/common/platform';
1414
import { ICommonElectronService } from 'vs/platform/electron/common/electron';
1515
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
1616
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
@@ -302,6 +302,17 @@ export class ElectronMainService implements IElectronMainService {
302302
return shell.moveItemToTrash(fullPath);
303303
}
304304

305+
async isAdmin(): Promise<boolean> {
306+
let isAdmin: boolean;
307+
if (isWindows) {
308+
isAdmin = (await import('native-is-elevated'))();
309+
} else {
310+
isAdmin = isRootUser();
311+
}
312+
313+
return isAdmin;
314+
}
315+
305316
//#endregion
306317

307318

src/vs/workbench/electron-browser/window.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { Disposable, DisposableStore } from 'vs/base/common/lifecycle';
3434
import { LifecyclePhase, ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
3535
import { IWorkspaceFolderCreationData, IWorkspacesService } from 'vs/platform/workspaces/common/workspaces';
3636
import { IIntegrityService } from 'vs/workbench/services/integrity/common/integrity';
37-
import { isRootUser, isWindows, isMacintosh, isLinux } from 'vs/base/common/platform';
37+
import { isWindows, isMacintosh, isLinux } from 'vs/base/common/platform';
3838
import { IProductService, IAppCenterConfiguration } from 'vs/platform/product/common/productService';
3939
import { INotificationService } from 'vs/platform/notification/common/notification';
4040
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
@@ -404,12 +404,7 @@ export class NativeWindow extends Disposable {
404404

405405
// Root warning
406406
this.lifecycleService.when(LifecyclePhase.Restored).then(async () => {
407-
let isAdmin: boolean;
408-
if (isWindows) {
409-
isAdmin = (await import('native-is-elevated'))();
410-
} else {
411-
isAdmin = isRootUser();
412-
}
407+
const isAdmin = await this.electronService.isAdmin();
413408

414409
// Update title
415410
this.titleService.updateProperties({ isAdmin });

src/vs/workbench/test/electron-browser/workbenchTestServices.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export class TestElectronService implements IElectronService {
205205
async pickWorkspaceAndOpen(options: INativeOpenDialogOptions): Promise<void> { }
206206
async showItemInFolder(path: string): Promise<void> { }
207207
async setRepresentedFilename(path: string): Promise<void> { }
208+
async isAdmin(): Promise<boolean> { return false; }
208209
async setDocumentEdited(edited: boolean): Promise<void> { }
209210
async openExternal(url: string): Promise<boolean> { return false; }
210211
async updateTouchBar(): Promise<void> { }

0 commit comments

Comments
 (0)